0


Java8使用stream流给List<Map<String,Object>>分组(多字段key)

Java8使用

stream流

给List<Map<String,Object>>根据字段key

分组

一、项目场景:
从已得到的List集合中,根据某一元素(这里指map的key)进行分组,筛选出需要的数据。
如果是SQL的话则使用

group by

直接实现,代码的方式则如下:
使用到stream流的

Collectors.groupingBy()

方法。

二、代码实现
1、首先将数据add封装到List中,完成数据准备。

//groupList用于库-表分组的list,减少jdbc连接时间List<Map<String,Object>> groupList =newArrayList<>();Map<String,Object> map1 =newHashMap<>();
map.put("name","张三");
map.put("age",20);Map<String,Object> map2 =newHashMap<>();
map.put("name","李四");
map.put("age",20);//excel每行的值存入集合中
groupList.add(map1);
groupList.add(map2);

2、然后按照name属性进行分组(

单字段

),使用

stream流分组
//分组判断,stream流Map<String,List<Map<String,Object>>> listMap =
        groupList.stream().collect(Collectors.groupingBy(item -> item.get("name").toString()));

··按照name,age属性进行分组(

多字段

),使用

stream流分组
//分组判断,stream流Map<String,List<Map<String,Object>>> listMap =
        groupList.stream().collect(Collectors.groupingBy(item -> item.get("name").toString()+"|"+item.get("age")));

3、遍历结果,输出查看
得到Map<String, List<Map<String, Object>>>,
key是你分组的字段,value分组下对应的值。
也就是group by的效果。

for(String groupKey : listMap.keySet()){//分组keySystem.out.println("分组Key: "+groupKey);System.out.println("分组Key的value: "+listMap.get("groupKey"));}
标签: list java spring boot

本文转载自: https://blog.csdn.net/weixin_43920527/article/details/129820467
版权归原作者 Lin'ZT 所有, 如有侵权,请联系我们删除。

“Java8使用stream流给List<Map<String,Object>>分组(多字段key)”的评论:

还没有评论