两个List求交集,一个是 alist<ObjectA> 一个是bList<ObjectB> .
不管list内置的对象相同与否,都要把他们的属性值取出来做对比,对象是无法对比的。说到底还是字符串的对比。
下面的例子是:两个对象各自取出 三个要对比的属性值 拼接成 ‘attr1|attr2|attr3’ 这样的字符串做对比。
List<ObjectA> resList = aList.stream().filter(item -> bList.stream().map(e -> e.getFllName() + "|" + e.getSalary() + "|" + e.getSex())
.collect(Collectors.toList()).contains(item.getName() + "|" + item.getMoney() + "|" + item.getSex()))
.collect(Collectors.toList());
System.out.println("---交集 ---");
resultList.parallelStream().forEach(System.out::println);
我说清楚了吧。 大家可以copy修改使用了。