iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java8使用stream流给List<Map<String,Object>>分组(多字段key)
  • 408
分享到

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

listjavaspringboot后端 2023-09-07 07:09:38 408人浏览 薄情痞子
摘要

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

Java8使用stream流给List>根据字段key分组

一、项目场景:
从已得到的List集合中,根据某一元素(这里指map的key)进行分组,筛选出需要的数据。
如果是sql的话则使用group by直接实现,代码的方式则如下:
使用到stream流的Collectors.groupingBy()方法。

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

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

然后按照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")));

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

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

来源地址:https://blog.csdn.net/weixin_43920527/article/details/129820467

--结束END--

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

本文链接: https://www.lsjlt.com/news/397855.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作