java8利用lambda表达式对map集合进行分组求和,求最大值,平均值


java8利用lambda表达式对map集合进行分组求和,求最大值,平均值

 

List<Map<String,Object>> counts = cardMapper.getCount(map);//查询数据库得到的map集合
List<Map<String,Object>> result =new ArrayList<>();
Map<String, List<Map<String, Object>>> glist = counts.stream().collect(Collectors.groupingBy(e -> e.get("card_id").toString()+"#"+e.get("channel_id").toString()+"#"+e.get("store_id")));//对card_id,channel_id,store_id进行分组
//对member_num求和,其他字段原样返回
glist.forEach((k,slist)->{
Map<String,Object> nmap=new HashMap<>();
IntSummaryStatistics sumcc = slist.stream().collect(Collectors.summarizingInt(e->Integer.valueOf(e.get("member_num").toString())));
nmap.put("card_id", slist.get(0).get("card_id"));
nmap.put("channel_id", slist.get(0).get("channel_id"));
nmap.put("member_num", sumcc.getSum());//求和
nmap.put("store_id",slist.get(0).get("store_id"));
nmap.put("area_id",slist.get(0).get("area_id"));
nmap.put("shop_type",slist.get(0).get("shop_type"));
result.add(nmap);
});


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM