转载自: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的对象。