当前位置:龙哥网 > 各类源码 > java8 stream groupingBy分组+排序

java8 stream groupingBy分组+排序

longge5个月前 (12-18)各类源码116

问题:

编写后端接口时,碰到一个这样的场景,查询出来的数据,按照其中的某个字段进行分组,转换成了Map。然后需要按照value中的某个值的大小,遍历map的键值对。但是我们都知道默认的HashMap是无序的,entrySet也是无序的,想要用stream的sorted做排序也是做不到的。后来换成了LinkedHashMap,但是entrySet使用sorted方法是没有办法达到效果的。

解决:

其实可以换一个思路,不纠结entrySet的排序,而是直接将查出来的数据,先按排序的值进行排序,然后再按字段分组,转换成LinkedHashMap,此时的LinkedHashMap就保留了顺序,可以直接遍历了。

java8 stream groupingBy分组+排序

// 查询模板库集合List<QualityCheckTemplateDetail> templateDetailList=qualityCheckTemplateDetailService.list(Wraps.<QualityCheckTemplateDetail>lbQ().eq(QualityCheckTemplateDetail::getTemplateId,templateId));// 创建 项目dto集合List<QualityCheckItemSaveDTO> itemDtoList=new ArrayList<QualityCheckItemSaveDTO>();// 创建 以项目id为key的mapMap<Integer,List<QualityCheckTemplateDetail>> itemMap=new LinkedHashMap<Integer,List<QualityCheckTemplateDetail>>();// 遍历 模板明细集合itemMap=Optional.ofNullable(templateDetailList).orElse(new ArrayList<QualityCheckTemplateDetail>()).stream()
        .sorted((o1, o2) -> o1.getItemOrder()-o2.getItemOrder())
        .collect(Collectors.groupingBy(QualityCheckTemplateDetail::getItemId,LinkedHashMap::new,Collectors.toList()));


免责声明
本站部分资源来源于互联网 如有侵权 请联系站长删除
龙哥网是优质的互联网科技创业资源_行业项目分享_网络知识引流变现方法的平台为广大网友提供学习互联网相关知识_内容变现的方法。#转载请注明出处!

相关文章

WordPress新闻自媒体主题 MNews V2.4可用版

WordPress新闻自媒体主题 MNews V2.4可用版

介绍: 修复一些Bug,完善一些细节 新增:自定义关键词内链的功能,可无限增加 新增:提交问题时,时间限制和检查是否有重复标题的问题(设置文档) 新增:投稿之后发布成功与失败提示邮件,文章发布为成功...

一款PHP仿知乎问答社区响应式源码及安装过程详解

一款PHP仿知乎问答社区响应式源码及安装过程详解

  这款系统是基于PHP内核开发的,主要是社区问答功能,跟知乎很相似,比较适合做个人问答类型的社区网站,老规矩,我们先来看下安装过程,然后安装一下。  过程比较简单哈  1.上传源码到网站根目录  压...

php版轻量级的在线团队协作工具附源码(团队官网PHP源码)

php版轻量级的在线团队协作工具附源码(团队官网PHP源码)

  1、一款非常轻量级的在线协作团队工具,支持提供各种各样的文档工具、在线实现思维导图、支持在线画流程图、支持项目的管理、支持项目开发任务的分发,团队的知识库分享管理等各类工具工具。  2、支持项目的...

java爬虫获取网页源码2种方式

java爬虫获取网页源码2种方式

第一种:URLpackage InternetTest;import java.io.ByteArrayOutputStream;import java.io.Input...