按字段归类 groupingBy,统计个数 counting
代码片段
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", "1999");
map3.put("name", "Anne");
map3.put("age", "21");
map3.put("sex", "F");
Map<String, String> map4 = new HashMap<>();
map4.put("year", "1998");
map4.put("name", "John");
map4.put("age", "22");
map4.put("sex", "F");
List<Map<String, String>> list = new ArrayList<>();
list.add(map1);
list.add(map2);
list.add(map3);
list.add(map4);
// 将list根据year字段分类后每个元素值的个数
Map<String, Long> year_map = list.stream().collect(
Collectors.groupingBy(doc -> doc.get("year"), Collectors.counting()));
year_map.forEach((k, v) -> {
System.out.println(k + " -> " + v);
});
结果输出
1998 -> 2
1997 -> 1
1999 -> 1