JDK8操作list

去重:

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();

猜你喜欢

转载自blog.csdn.net/qq_32298671/article/details/107425705