Java集合获取交集、并集、重复元素

使用场景:如当一个用户的菜单发生变更了,不能直接删除全部,重新新增数据。需要判断用户本次操作后哪些是新增的,哪些是不用变的,哪些是需要删除的。

List newList = new ArrayList();//新集合
newList .add(1);
newList .add(2);
newList .add(3);
newList .add(4);
newList .add(4);
List oldList= new ArrayList();//老集合
oldList.add(3);
oldList.add(3);
oldList.add(4);
oldList.add(5);
oldList.add(6);
HashSet<String> newSet = new HashSet<>(newList);//新集合去重
HashSet<String> delSet = new HashSet<>(oldList);//老集合去重
oldList.retainAll(newSet);
log.info("交集后结果:" + oldList);
delSet .removeAll(oldList);
log.info("减去交集后结果为需要删除的:" + delSet);
newSet .removeAll(oldList);
log.info("减去交集后结果为需要新增的:" + newSet);
newRole.forEach(s -> insert(s));//执行插入
delRole.forEach(s -> delete(s));//执行删除

运行打印结果如下:

[main] INFO com.p5w.unifiedlogin.SignUtil - new:[1, 2, 3, 4, 4]
[main] INFO com.p5w.unifiedlogin.SignUtil - old:[3, 3, 4, 5, 6]
[main] INFO com.p5w.unifiedlogin.SignUtil - 交集后结果:[3, 3, 4]
[main] INFO com.p5w.unifiedlogin.SignUtil - 减去交集后结果为需要删除的:[5, 6]
[main] INFO com.p5w.unifiedlogin.SignUtil - 减去交集后结果为需要新增的:[1, 2]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Tangyuewei

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

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

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

打赏作者

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

抵扣说明:

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

余额充值