stream List 根据map中某个字段分组,将另一个字段用逗号分隔组成字符串

一个老师对应多个学生,老师“张三”和老师“李四”对应的学生一样,为了区分将对应的学生命名不同。
List resultList = new ArrayList<>();
Map map = Maps.newHashMap();
map.put("teacher", "张三");
map.put("stu", "stu1");
resultList.add(map);

Map map1= Maps.newHashMap();
map1.put("teacher", "张三");
map1.put("stu", "stu2");
resultList.add(map1);

Map map2= Maps.newHashMap();
map2.put("teacher", "李四");
map2.put("stu", "stu3");
resultList.add(map2);

Map map3= Maps.newHashMap();
map3.put("teacher", "李四");
map3.put("stu", "stu4");
resultList.add(map3);
Map resultMap = resultList.stream().collect(
        Collectors.groupingBy(
                (Map m) -> (String) m.get("teacher"),
                Collectors.mapping(
                        (Map n) -> (String) n.get("stu"),
                        Collectors.joining(",")
                )
        )
);
System.out.println(resultMap);

输出结果:

{李四=stu3,stu4, 张三=stu1,stu2}

 

你可能感兴趣的:(stream List 根据map中某个字段分组,将另一个字段用逗号分隔组成字符串)