分组 Collectors.groupingBy()
代码片段:
Map<String, String> map1 = new HashMap<>();
map1.put("year", "1998");
map1.put("name", "linmm");
map1.put("age", "22");
map1.put("sex", "F");
Map<String, String> map2 = new HashMap<>();
map2.put("year", "1997");
map2.put("name", "LiLie");
map2.put("age", "23");
map2.put("sex", "M");
Map<String, String> map3 = new HashMap<>();
map3.put("year", "1998");
map3.put("name", "Anne");
map3.put("age", "22");
map3.put("sex", "F");
List<Map<String, String>> list = new ArrayList<>();
list.add(map1);
list.add(map2);
list.add(map3);
// 将集合list按照year进行分组
Map<String, List<Map<String, String>>> year_map = list.stream().collect(Collectors.groupingBy(doc -> doc.get("year")));
year_map.forEach((k, v) -> {
System.out.println(k + " -> " + v);
});
输出结果:
1998 -> [{year=1998, sex=F, name=linmm, age=22}, {year=1998, sex=F, name=Anne, age=22}]
1997 -> [{year=1997, sex=M, name=LiLie, age=23}]