Map根据Key值进行排序

如果这篇文章对你有帮助的话,希望可以给博主点个赞,感谢!!

今天在写一个功能的时候,需要根据日期进行分组,于是我从数据库查找的时候就使用order by create_time desc进行降序排序,一开始数据是正常的排序,但是当我使用stream()进行分组之后,发现数据排序出现了问题

首先根据日期进行分组,日期作为Map的key,对应该日期的数据列表作为value进行存储,但是可以从图看出这个日期并不是降序的,这会导致前端获取到这些数据的时候无法按照正确的顺序输出。
所以我们要对这个listMap进行再一次排序。

List<EarnDetailParam> list=cereShopOrderDAO.getEarnDetails(param);
list.stream().forEach(l->l.setDate(l.getCreateTime().split(" ")[0]));
Map<String,List<EarnDetailParam>> listMap = list.stream().collect(Collectors.groupingBy(EarnDetailParam::getDate));
Map<String, List<EarnDetailParam>> result = new LinkedHashMap<>();
listMap.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByKey())).forEachOrdered(x -> result.put(x.getKey(), x.getValue()));

首先我们根据第一条语句去数据库获取数据,由于create_time是带有时间的,所以分组的时候需要一个新的变量去存create_time切割后的日期
list.stream().collect(Collectors.groupingBy(EarnDetailParam::getDate))这个语句是使用刚刚获取的date进行分组操作,之后就会得到上面的图。
由于顺序不是我们所希望的降序,所以我们还需要进行下一步操作,定义一个LinkedHashMap进行存储,然后根据Map的Key进行排序,因为我们要的是降序操作,所以要在.sorted(Collections.reverseOrder(Map.Entry.comparingByKey()))使用reverseOrder进行逆序,然后将键值对赋给result

.sorted(Map.Entry.comparingByKey()) 是升序
.sorted(Collections.reverseOrder(Map.Entry.comparingByKey())) 是逆序


此时就会得到我们所需要的降序分组,实现了我们想要的效果。

Map根据Key值进行排序(升序加降序)相关推荐

  1. java comparable排序_java 实现Comparable接口排序,升序、降序、倒叙

    本人由于项目开发中需要对查询结果list进行排序,这里根据的是每一个对象中的创建时间降序排序.本人讲解不深,只实现目的,如需理解原理还需查阅更深的资料. 1.实现的效果 2.创建排序的对象 packa ...

  2. Java stream().sorted()实现排序(升序、降序、多字段排序)

    1 自然排序 sorted():自然排序,流中元素需实现Comparable接口 package com.entity;import lombok.*;@Data @ToString @AllArgs ...

  3. Excel表格怎么排序?升序和降序

    Excel拥有许许多多的功能,几乎你想要的效果都可与通过Excel来实现,只有想不到没有它做不到的.那么我们在处理数据的同时,会想知道哪些数据是靠前的,哪些数据是靠后的.那么我们就来给大家讲解下Exc ...

  4. 对list集合排序升序和降序使用sort()

    Collections.sort(resultList, new Comparator<HealthRecordRepeat>() { @Override public int compa ...

  5. SQL-ORDER BY 多字段排序(升序、降序)

    转载自:http://www.jb51.net/article/52792.htm ORDER BY _column1, _column2; /* _column1升序,_column2升序 */ O ...

  6. Java实现TreeMap集合的排序:Key键的升序与降序、Value值的排序

    Java 提供的 Map 接口常用的实现类有 HashMap 和 TreeMap.HashMap 类实现的 Map 集合对于添加和删除映射关系效率更高.HashMap 通过哈希码对其内部的映射关系进行 ...

  7. java8新特性:对map集合排序,根据key或者value操作排序(升序、降序)

    java8新特性:对map集合排序,根据key或者value操作排序(升序.降序) 直接上代码: package com.drew.test; import java.util.List; impor ...

  8. stream流倒序排序_java8 stream 操作map根据key或者value排序的实现|chu

    引言 最近小编自己一个人在负责一个项目的后台开发,其中有一部分是统计相关的功能,所以需要一些排序或者分组的操作,之前这种操作小编觉得还是比较麻烦的,虽热有一些现成的工具类,但是工具类的写法也是比较复杂 ...

  9. 根据Map的value值进行排序-map排序

    package com.sm.util;import java.util.ArrayList; import java.util.Collections; import java.util.Compa ...

最新文章

  1. 排列和组合简单的递归思路以及C++实现
  2. [云炬创业基础笔记]第九章企业的法律形态测试4
  3. 科技巨头开发人工智能 稀缺品种或成A股香饽饽
  4. UI设计实用素材|线框套件 WRFRM
  5. bzoj 1625: [Usaco2007 Dec]宝石手镯(01背包)
  6. H236各个版本的区别总结
  7. 国内十大HR系统品牌
  8. 员工考勤管理系统html,网页考勤系统人员排班操作说明
  9. ultraiso软碟通dmg转iso图文教程
  10. 基于51单片机的12864液晶显示4X4矩阵键盘程序仿真
  11. idea清除本地注册信息
  12. 通达信 移动平均算法_通达信擒龙攻防战法主图指标公式
  13. abbyyfinereader软件下载中文注册免安装激活版
  14. MtaEdt22.exe修改IIS连接数无效的另类解决连接数的方法
  15. 社区团购小程序怎么做,全流程解析
  16. android毗邻(Pilin)即时聊天应用源码
  17. 大集中系统的个人所得税解决方案
  18. 日乒赛-马龙爆冷止步次轮 朱雨玲陈梦率先进8强
  19. char类型与short类型
  20. 计算机文化期末试卷,计算机文化基础期末试卷.pdf

热门文章

  1. 7、刷牛客网SQL题(一)
  2. nc提示java过期_用友NC系统使用过程中常见问题和解决方法!财会必看!
  3. php udp,PHP UDP攻击查找源头
  4. python设计樱花_用Python画樱花?想得美就能画得美(上)
  5. Source insight 4.0 显示右边文件
  6. 关于“未能加载文件或程序集”的解决方法
  7. 迁出X86架构,你准备好了吗?
  8. C语言运算符与表达式课件,C语言课件(运算符和表达式).ppt
  9. 红警战网地图下载 红警地图库下载 红警战网客户端地图库地图下载
  10. Jenkins教程(4)使用PyInstaller构建Python应用