持续更新……
对一个存储A元素的集合list,计算集合list中所有A元素的属性B的和
List<A> list = new ArrayList<>(); list.add(new A(1)); list.add(new A(2)); list.add(new A(3)); list.add(new A(4)); Integer sum = list.stream().map(A::getRecord).reduce(0, Integer::sum);
对一个存储A元素的集合list,把list转为map, key为A的属性B,value为A
List<A> list = new ArrayList<>(); list.add(new A(1)); list.add(new A(2)); list.add(new A(3)); list.add(new A(4)); Map<Integer, A> map = list.stream().collect(Collectors.toMap(A::getRecord, item -> item));
把多个逗号分割的id字符串,组合成一个id集合
List<String> roleIds = page.getRecords() .stream() .map(item -> item.getRoleIds().split(",")) .flatMap(Arrays::stream) .collect(Collectors.toList());
分组后求和
Map<Long, Integer> normalMap = normalPersistence.list(Wrappers.<OrderItemNormal>lambdaQuery().in(OrderItemNormal::getOrderCode, orderCodeSet)) .stream().collect(Collectors.groupingBy(OrderItemNormal::getSkuId,Collectors.summingInt(OrderItemNormal::getSkuQuantity)));
取某(多个)字段成为列表
// 单个字段 Map<String, List<String>> ruleMap1 = ruleList.stream(). .collect(Collectors.groupingBy(Rule::getId, Collectors.mapping(Rule::getRuleName, Collectors.toList()))); // 多个字段 List<Long> timeList = cmdVOList.stream() .flatMap(it -> it.getRxCans().stream() .flatMap(cans -> Stream.of(cans.getCheckStartTime(), cans.getCheckEndTime())) ) .collect(Collectors.toList());
取列表中第一个值
Map<String, Rule> ruleMap = ruleList.stream(). .collect(Collectors.groupingBy(Rule::getId, Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));