原业务场景:从数据库查询出来的数据是List<Map>格式,然后需要根据其中某个字段进行汇总,汇总结果只需要另外一个字段。下面是模拟数据测试
代码示例:
List<Map<String,Object>> list=new ArrayList<>();
Map<String,Object> map=new HashMap<>();
map.put("aaa","111");
map.put("bbb","111");
list.add(map);
Map<String,Object> map2=new HashMap<>();
map2.put("aaa","222");
map2.put("bbb","222");
list.add(map2);
Map<String,Object> map3=new HashMap<>();
map3.put("aaa","333");
map3.put("bbb","333");
list.add(map3);
Map<String,List<String>> result=list.stream()
.collect(
Collectors.groupingBy(
e->(((HashMap)e).get("aaa")).toString(),
Collectors.mapping(e->((HashMap)e).get("bbb").toString(),Collectors.toList())
));
System.out.println(JSONObject.toJSONString(result));
输出结果:
{"111":["111"],"222":["222"],"333":["333"]}