java8 stream List<Map>根据map的key分组,并且结果转换为list

原业务场景:从数据库查询出来的数据是List<Map>格式,然后需要根据其中某个字段进行汇总,汇总结果只需要另外一个字段。下面是模拟数据测试

代码示例:

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"]}

猜你喜欢

转载自blog.csdn.net/caicai250/article/details/123506966