List集合的stream流处理


1.List取出某个属性的集合 limit取前num条
List list = list.stream().map(Bean::getField).limit(num)..collect(Collectors.toList());

2.List转Map
Map map =list.stream().collect(Collectors.toMap(Bean::getField, Function.identity()));
Map map =list.stream().collect(Collectors.toMap(Bean::getField, Bean::getField()));

3.List转Llist
list.stream().map(x -> x + "").collect(Collectors.toList());

4.List根据某个属性分组
Map> 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().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 list = list.stream().filter(x -> x.getField().equals("")...业务逻辑).map(y ->{..业务逻辑,可省略此部分}).collect(Collectors.toList());

8.List>合并为Map
Map 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(","));

...待补充

相关