especial 发表于 2020-7-22 10:50

java 8 stream 处理对于 List<Map<String,Object>> 数据的分组求和

java 8 在推出stream 之后大大的简化了 对于集合等数据的处理
在业务场景中经常会遇到对于批量数据在代码层面的汇总求和逻辑
这里就直接代码了
arrCollect=arrCollect.stream().collect(Collectors.groupingBy(e -> e.get("tName"))).values().stream().map(d -> {
                Map<String, Object> sampleData = d.get(0);
                sampleData.put("price", d.stream().map(s -> new BigDecimal(s.get("price").toString())).reduce(BigDecimal.ZERO, BigDecimal::add));
                return sampleData;
            }).collect(Collectors.toList());
以及对于List<T> 多个list 汇总成一个list

reduce(new ArrayList<WmTblWorkorder>(), (all, item ) -> {all.addAll(item); return all;}));

夏橙M兮 发表于 2020-7-22 17:33

谢谢分享,这个函数式编程是面向行为的,简洁易懂值得学习。

爱你分享 发表于 2020-7-22 17:52

个人认为,可读性不太高,平常会用在生产开发中吗?

especial 发表于 2020-7-24 09:06

是的在对于不同的地方获取到的数据 在代码层面进行分组汇总,我个人就用到了好多:lol

peterxiaoyang 发表于 2020-7-27 17:36

多个List合并成一个List 直接用addAll不也可以吗?

especial 发表于 2020-7-28 14:00

分组list 汇总
页: [1]
查看完整版本: java 8 stream 处理对于 List<Map<String,Object>> 数据的分组求和