Java集合处理: 两个集合去重复、或者交集

来源:互联网 发布:淘宝平铺拍摄布光 编辑:程序博客网 时间:2024/05/18 20:49



@EqualsAndHashCode(of = "vmId")public class VirtualMachine {    @Getter    @Setter    private Integer id;    @Getter    @Setter    private String vmName;    @Getter    @Setter    private String userFor;    @Getter    @Setter    private Integer memory;    @Getter    @Setter    private Integer cpu;    @Getter    @Setter    private Integer hardDisk;    @Getter    @Setter    private String templateGuid;    @Getter    @Setter    private String vmId;

法一去重复:利用set的不可以存重复对象,去重复【对象要实现hashcode、equals】

Set set = new HashSet();for (Object object : virtualMachineList) {    set.add(object);}for (Object object : listVms) {    set.add(object);}System.out.println("***************::" + set.size());

法二去重复:

/** * 将列表中重复的虚拟机移除,重复指的是vmId相同 * * @param vmList * @return */public ArrayList<VirtualMachine> removeDuplicteVm(List<VirtualMachine> vmList) {    Set<VirtualMachine> s = new TreeSet<VirtualMachine>(new Comparator<VirtualMachine>() {        @Override        public int compare(VirtualMachine o1, VirtualMachine o2) {            System.out.println(o1.getVmId() + "|" + o2.getVmId());            String v1 = o1.getVmId() != null ? o1.getVmId() : "0";            String v2 = o2.getVmId() != null ? o2.getVmId() : "0";            return v1.compareTo(v2);        }    });    s.addAll(vmList);    return new ArrayList<VirtualMachine>(s);}

取交集::::::

使用集合的自带方法,removeAll取交集

virtualMachineList.removeAll(listVms);









原创粉丝点击