目录

今日说码

点滴记录中国代码进程

Stream 流

过滤

list.stream().filter().collect(Collectors.toList());

指定字段集合

list.stream().map(item -> item.getXXX()).collect(Collectors.toList());
list.stream().map(Entity::getXXX).collect(Collectors.toList());

指定字段属性转Map

#(k1, k2) -> k2 意思是遇到相同的key时取第二个值,k1同理,也可以不写
list.stream().collect(Collectors.toMap(Entity::getXXX, Entity::getXXX, (k1, k2) -> k2));
list.stream().collect(Collectors.toMap(Entity::getXXX, Function.identity()));

分组

#分组
list.stream().collect(Collectors.groupingBy(item -> item.getXXX()));
list.stream().collect(Collectors.groupingBy(Entity::getXXX));

#分组保持排序
list.stream().collect(Collectors.groupingBy(item -> item.getXXX(), LinkedHashMap::new, Collectors.toList()));
list.stream().collect(Collectors.groupingBy(Entity::getXXX, LinkedHashMap::new, Collectors.toList()));

拼接

list.stream().collect(Collectors.joining("|"));

指定字段去重

list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(item -> item.getXXX()))), ArrayList::new));
list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Entity::getXXX))), ArrayList::new));

遍历

list.stream().forEach();

求和

#int求和
list.stream().mapToInt(item -> item.getXXX()).sum();
list.stream().mapToInt(Entity::getXXX).sum();

#BigDecimal求和
list.stream().map(item -> item.getXXX()).reduce(BigDecimal.ZERO, BigDecimal::add);
list.stream().map(Entity::getXXX).reduce(BigDecimal.ZERO, BigDecimal::add);

计数

list.stream().mapToInt().count();

最值

#最大值
list.stream().mapToInt(item -> item.getXXX()).max();
list.stream().mapToInt(Entity::getXXX).max();

#最小值
list.stream().mapToInt(item -> item.getXXX()).min();
list.stream().mapToInt(Entity::getXXX).min();

标题:Stream 流
作者:96XL
地址:https://solo.96xl.top/articles/2021/12/24/1640310551216.html