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