1. 程式人生 > 其它 >List集合的stream流處理

List集合的stream流處理

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<Long, List<Long>> map3= list.stream().collect(Collectors.groupingBy(Bean::getField,Collectors.mapping(Bean::getField,Collectors.toList())));

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 -> x, (x, y) -> x)).values().stream().collect(Collectors.toList());

6.List根據某個屬性去重並將某個數值屬性值累加
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將某個數值屬性值累加
List.stream().map(x -> x.getField()).reduce(BigDecimal.ZERO, (m, n) -> m.add(n));

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());多個欄位排序

...待補充