list 转map,计算相同key值下对象数量的和
1,将list通过某个字段转为map 2,计算相同key中对象中数量的和
public static void main(String[] args) { ArrayList<TypeSourceVo> personList = new ArrayList<>(); TypeSourceVo vo1 = new TypeSourceVo(); TypeSourceVo vo2 = new TypeSourceVo(); TypeSourceVo vo3 = new TypeSourceVo(); vo1.setType("qd"); vo2.setType("qd"); vo3.setType("qhiuiuew"); vo1.setNum(32); vo3.setNum(25); vo2.setNum(62); personList.add(vo1); personList.add(vo2); personList.add(vo3); // 求集合中对象的年龄的总和 Optional<Integer> reduce3 = personList.stream().map(p -> p.getNum()).reduce(Integer::sum); System.out.println(reduce3); //Optional[50] //记录另一种方式 //Map<String, List<String>> map = vos.stream().collect( // Collectors.groupingBy( // DisposalVo::getStreetName, Collectors.mapping( // DisposalVo::getStatus, Collectors.toList()))); Map<String, List<TypeSourceVo>> collect = personList.stream().collect(Collectors.groupingBy(TypeSourceVo::getType)); for (Map.Entry<String, List<TypeSourceVo>> entry : collect.entrySet()) { System.out.println(entry.getKey() + "------" + entry.getValue()); String key = entry.getKey(); Optional<Integer> reduce = entry.getValue().stream().map(vo -> vo.getNum()).reduce(Integer::sum); System.out.println("type为:"+key+",数量为:"+reduce); } }
下一篇:
23种设计模式汇总整理