jdk8分组返回的map,value除了是List,还可以是多种类型。
示例:
public static void main(String[] args) { List<Map<String, Object>> list = Arrays.asList( ImmutableMap.of("id", 1, "name", "zhangsan", "city", "henan"), ImmutableMap.of("id", 2, "name", "lisi", "city", "hebei"), ImmutableMap.of("id", 3, "name", "wangwu", "city", "tianjin"), ImmutableMap.of("id", 4, "name", "maliu", "city", "henan") ); Map<Object, List<Map<String, Object>>> map = list.stream().collect(Collectors.groupingBy(p -> p.get("city"))); System.out.println(map); Map<Object, Set<Object>> map0 = list.stream().collect(Collectors.groupingBy(p -> p.get("city"), Collectors.mapping(p -> p.get("city"), Collectors.toSet()))); System.out.println(map0); Map<Object, Long> ss = list.stream().collect(Collectors.groupingBy(p -> p.get("city"), Collectors.counting())); System.out.println(ss); }
重点就是利用Collectord