1.List取出某個屬性的集合 limit取前num條
List<T> list = list.stream().map(Bean::getField).limit(num)..collect(Collectors.toList());
2.List轉Map
Map<T,Bean> map =list.stream().collect(Collectors.toMap(Bean::getField, Function.identity()));
Map<T,T> map =list.stream().collect(Collectors.toMap(Bean::getField, Bean::getField()));
3.List<Integer>轉Llist<String>
list.stream().map(x -> x + "").collect(Collectors.toList());
4.List根據某個屬性分組
Map<T, List<T>> map= list.stream().collect(Collectors.groupingBy(Bean::getField,Collectors.mapping(Bean::getField,Collectors.toList())));
Map<T, List<T>> map = list.stream().collect(Collectors.groupingBy(x -> x.skuId() + "-" + x.skuName()));多屬性分組
5.List根據某個屬性去重(兩種寫法均可)
list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Bean::getField))), ArrayList::new));
list.stream().collect(Collectors.toMap(x -> x.getSkuId() + "," + x.getSkuName(), x -> x, (x, y) -> x)).values().stream().collect(Collectors.toList());多個屬性去重,單屬性就去掉","+x.getSkuName
List<Bean> list = list.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(comparing(x -> x.getFiled() + ";" + x.getFiled2()))), ArrayList::new));多個屬性去重
6.List將某個屬性值累加
list.stream().map(Bean::getFiled).reduce(BigDecimal.ZERO, BigDecimal::add);
list.stream().collect(Collectors.summingLong(Bean::getFiled));適用於Long、Int、Double
list.stream().collect(Collectors.toMap(x->x.getSkuId(),x->x,(x, y)->{x.setField(x.getField().add(y.getField()));return x;})).values().stream().collect(Collectors.toList());
7.List過濾某個屬性
List<T> list = list.stream().filter(x -> x.getField().equals("")...業務邏輯).map(y ->{..業務邏輯,可省略此部分}).collect(Collectors.toList());
8.List<Map<String, String>>合並為Map<String,String>
Map<String, String> map = listMap.stream().filter(e -> !CollectionUtils.isEmpty(e)).reduce(map, (x, y) -> {x.putAll(y); return x;});
9.List分組
Lists.partition(list,num(代表分成num條數據為一組))
10.List根據某個屬性排序
list.stream().sorted(Comparator.comparing(Bean::getField)).collect(Collectors.toList());正序
list.stream().sorted(Comparator.comparing(Bean::getField).reversed()).collect(Collectors.toList());倒序
list.stream().sorted(Comparator.comparing(Bean::getField).thenComparing(Bean::getField)).collect(Collectors.toList());多個字段排序
11.List根據逗號分割為字符串 不適用於中間有空字符的場景,分割后為:123,,567
Joiner.on(",").join(list);
list.stream().map(Bean::getField).collect(Collectors.joining(","));
...待補充