元のビジネス シナリオ: データベースからクエリされたデータは List<Map> 形式であるため、フィールドの 1 つに従って要約する必要があり、要約結果には別のフィールドのみが必要です。以下はシミュレートされたデータテストです
コード例:
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"]}