java8 stream按对象多个属性对集合进行分组,并进行组装数据
2024-10-18 05:40:11
如图,数据库查出来的数据:
需求是按menu_id和menu_name分组,stream实现最简单,
stream里面只有按一个属性分组的,但是可以利用string简单变换一下:
List<JsonObject> list = goodsList.getList();
Map<String, List<JsonObject>> menuGroupMap = list.stream().collect(Collectors.groupingBy(goods -> goods.getInteger("menu_id")+"_"+goods.getString("menu_name")));
List<JsonObject> countRecords = menuGroupMap.keySet().stream().map(key -> {
String[] temp = key.split("_");
String menu_id = temp[0];
String menu_name = temp[1];
JsonObject goodObject = new JsonObject();
goodObject.put("menu_id",menu_id);
goodObject.put("menu_name",menu_name);
goodObject.put("goodList",menuGroupMap.get(key));
goodObject.put("goodNum",menuGroupMap.get(key));
return goodObject;
}).collect(Collectors.toList());
可以先利用 menu_id + _ menu_name 分组,然后再拼接组装数据,最后得出想要的结果:
最新文章
- POI-HSSF and POI-XSSF - Java API To Access Microsoft Excel Format Files
- bsearch
- Apache 禁止访问目录
- shiro 权限管理配置
- 秒杀linux下系统调用fork()面试题(转)
- 目前比较火的前端框架及UI组件
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十):服务熔断(Hystrix、Turbine)
- Docker微容器+微服务将颠覆传统的软件架构
- Tips about Troubleshooting RAC
- Unity单例
- js选择器 querySelector
- 基于MATLAB的RGB转YCBCR色彩空间转换
- C# 调用WebService服务
- JAVA 急速WEB框架Blast-本人开发的JavaWeb急速框架Blast上线了
- scp和rsync的区别和常用参数
- Oracle GoldenGate 三、加密
- 数学:FFT
- leetcode 2 两数相加 JAVA
- RabbitMQ消息队基本概念
- 在Windows 7 (SP1)上安装Visual Studio 2015
热门文章
- python基础[16]——解决django连接mysql数据库报错的问题
- ELK学习实验006:Nginx的日志分析系统之filebeat配置
- k8s集群---apiserver,controller-manager,scheduler部署
- SVN+Apache+IF.svnadmin支持https实现web管理SVN
- 洛谷$P1935$ [国家集训队]圈地计划 网络流
- python的一些高阶用法
- Eclipse和Tomcat的版本问题---已解决
- 子网划分及NAT技术总结
- HDU4352 XHXJ&#39;s LIS 题解 数位DP
- 1073 多选题常见计分法 (20分)C语言