去重:
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分组再求和:
list.stream().collect(Collectors.groupingBy(t -> t.getId(), Collectors.groupingBy(t -> t.getCId(), Collectors.summingDouble(t -> t.getScore()))));
list转map:
list.stream().collect(Collectors.toMap(Entity::getKey, Function.identity(), (key1, key2) -> key2));
list排序:
list.sort((c1, c2) -> c2.getScore().compareTo(c1.getScore()));
list.stream().sorted((s1, s2) -> s1.getAge().compareTo(s2.getAge())).collect(Collectors.toList());
list.sort(Comparator.comparing(Demo::getSex).thenComparing(Demo::getAge));
筛选数据:
list.stream().filter(t -> t.getScore() < 60).collect(Collectors.toList());
统计求和:
list.stream().mapToDouble(t -> t.getScore()).sum();