如图,数据库查出来的数据:

需求是按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 分组,然后再拼接组装数据,最后得出想要的结果:

最新文章

  1. POI-HSSF and POI-XSSF - Java API To Access Microsoft Excel Format Files
  2. bsearch
  3. Apache 禁止访问目录
  4. shiro 权限管理配置
  5. 秒杀linux下系统调用fork()面试题(转)
  6. 目前比较火的前端框架及UI组件
  7. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十):服务熔断(Hystrix、Turbine)
  8. Docker微容器+微服务将颠覆传统的软件架构
  9. Tips about Troubleshooting RAC
  10. Unity单例
  11. js选择器 querySelector
  12. 基于MATLAB的RGB转YCBCR色彩空间转换
  13. C# 调用WebService服务
  14. JAVA 急速WEB框架Blast-本人开发的JavaWeb急速框架Blast上线了
  15. scp和rsync的区别和常用参数
  16. Oracle GoldenGate 三、加密
  17. 数学:FFT
  18. leetcode 2 两数相加 JAVA
  19. RabbitMQ消息队基本概念
  20. 在Windows 7 (SP1)上安装Visual Studio 2015

热门文章

  1. python基础[16]——解决django连接mysql数据库报错的问题
  2. ELK学习实验006:Nginx的日志分析系统之filebeat配置
  3. k8s集群---apiserver,controller-manager,scheduler部署
  4. SVN+Apache+IF.svnadmin支持https实现web管理SVN
  5. 洛谷$P1935$ [国家集训队]圈地计划 网络流
  6. python的一些高阶用法
  7. Eclipse和Tomcat的版本问题---已解决
  8. 子网划分及NAT技术总结
  9. HDU4352 XHXJ&#39;s LIS 题解 数位DP
  10. 1073 多选题常见计分法 (20分)C语言