去重:
list.stream().distinct().collect(Collectors.toList())
list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<T>(Comparator.comparing(T::getId))), Lists::newArrayList))
取交集:
list1.stream().map(v1 -> list2.stream().filter(v2 -> StringUtils.equals(v2.getId(), v1.getId())).findFirst().map(v -> {salary.setId(v.getId());return salary;}).orElse(null)).filter(Objects::nonNull).collect(Collectors.toList())
取在list1中不在list2中的值:
list1.stream().filter(v2 -> !list2.stream().map(Dto::getId).collect(Collectors.toList()).contains(v1.getId())).collect(Collectors.toList())
list转map分组:
list.stream().collect(Collectors.groupingBy(Entity::getId))
list.stream().collect(Collectors.groupingBy(t -> t.getId(), Collectors.groupingBy(t -> t.geCId())));
list转map按照Id分组在按照Cid分组再求和ÿ