【求助】Java8 对List> 进行分组统计

神秘csdner 2017-09-21 07:48:22
比方:
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "a");
map.put("price",500);

Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("name", "a");
map2.put("price",1500);

Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("name", "b");
map3.put("price",300);

List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
list.add(map);
list.add(map2);
list.add(map3);

这样的List,我如何用Java中lambda表达式快速的去分组,实现List中从3个元素变为a,2000和b,300的2个元素呢?
...全文
3953 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
suke_zzss 2019-09-23
  • 打赏
  • 举报
回复
引用 2 楼 qq_32639373 的回复:
Map<String, List<Map<String, Object>>> glist = list.stream().collect(Collectors.groupingBy(e -> e.get("name").toString()));

为什呢这行代码在idea里报错
你用的是jdk1.8以上吗
qq_32639373 2019-07-30
  • 打赏
  • 举报
回复
Map<String, List<Map<String, Object>>> glist = list.stream().collect(Collectors.groupingBy(e -> e.get("name").toString())); 为什呢这行代码在idea里报错
baidu_25526097 2019-01-23
  • 打赏
  • 举报
回复 1
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "a");
map.put("price",500);

Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("name", "a");
map2.put("price",1500);

Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("name", "b");
map3.put("price",300);

List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
list.add(map);
list.add(map2);
list.add(map3);



List<Map<String,Object>> result =new ArrayList<>();

Map<String, List<Map<String, Object>>> glist = list.stream().collect(Collectors.groupingBy(e -> e.get("name").toString()));

glist.forEach((k,slist)->{
Map<String,Object> nmap=new HashMap<>();
IntSummaryStatistics sumcc = slist.stream().collect(Collectors.summarizingInt(e->Integer.valueOf(e.get("price").toString())));
nmap.put("name", slist.get(0).get("name"));
nmap.put("price", sumcc.getSum());//求和
result.add(nmap);


});
System.out.println("--------testMerge-------------");
result.forEach(x->{
System.out.println(x);
});

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧