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



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









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

[shenhonglei]

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值