@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);