JDK8 Lambda 求集合对象的 交集 并集 差集

转载自:https://my.oschina.net/u/4258573/blog/3327546

叙述

使用 Lambda 对集合对象进行交集 并集 差集处理

解决方案

1 Class Person{
2     private int id;
3     private String name;

4     public Person(){}
5     public Person(int id, String name){
6         this.id=id;
7         this.name = name;
8     }  
9 }
 1 List<Person> listA = new ArrayList<>();
 2 List<Person> listB = new ArrayList<>();

 3 listA.add(new Person(1,"aa"));
 4 listA.add(new Person(1,"bb"));
 5 listA.add(new Person(1,"cc"));
 6 listA.add(new Person(1,"dd"));
 7 
 8 listB.add(new Person(1,"aa"));
 9 listB.add(new Person(1,"bb"));
10 listB.add(new Person(1,"cc"));

交集

List<Person> listC = listA.stream().filter(item -> listB.contains(item)).collect(Collectors.toList());

listC中的元素有:属性name值为 aa, bb, cc 的对象。

并集

//先合体
listA.addAll(listB);
//再去重
List<Person> listC = listA.stream().distinct().collect(Collectors.toList());

listC中的元素有:属性name值为 aa, bb, cc ,dd的对象。

差集

List<Person> listC = listA.stream().filter(item -> !listB.contains(item)).collect(Collectors.toList());

listC中的元素有:属性name值为 dd的对象。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值