差集
List<Person> reduce1 = list1.stream().filter(a -> !list2.stream().map(b -> b.getAge() + "&" + b.getName()).collect(Collectors.toList()).contains(a.getAge() + "&" + a.getName())).collect(Collectors.toList());reduce1.parallelStream().forEach(System.out :: println);System.out.println("=============================得到差集 reduce2 (list2 - list1)==================================");List<Person> reduce2 = list2.stream().filter(a -> !list1.stream().map(b -> b.getAge() + "&" + b.getName()).collect(Collectors.toList()).contains(a.getAge() + "&" + a.getName())).collect(Collectors.toList());reduce2.parallelStream().forEach(System.out :: println);
交集
List<Person> intersectA = list1.stream().filter(a -> list2.stream().map(Person::getName).anyMatch( name -> Objects.equals(a.getName(), name))).collect(Collectors.toList()); intersectA.parallelStream().forEach(System.out :: println);
过滤
Map<Object, Boolean> map = new HashMap<>();List<Person> list8 = list1.stream().filter(i -> map.putIfAbsent(i.getName()+"&"+i.getAge(), Boolean.TRUE) == null).collect(Collectors.toList());