最近在写需求时,将某张表中的短信信息拿出,sql写完后,取出来后的结构是List<Map>,在进行到某一步时需要将这个List<Map>进行逆序排序,

当时第一想法便是写一个for循环,然后得到想要的排序。事后,偶然间看到一个工具类Collections,其中有一个方法是reverse,

示例逆序代码如下,核心代码只要一句,非常简单:

以上是最简单的逆序,平时在写代码里往往会根据某一个条件或者字段等等进行排序。如果碰上这样的需求,一般会有两种方法:

  • 第一种是list中的对象实现Comparable接口;
  • 第二种方法是根据Collections.sort重载方法来实现。

此处,我就用第二种方法做一个示例

既然要根据某一条件进行排序,那么先做好前期准备,这里new了三个map,分别把一些数值put到map里,key为countNum,value为不同的值,如下:

接着定义要排序的字段(我这里用的是countNum),以及重载sort()方法,最后打印输出,如下:

其中new Comparator<Map>()的Map也可以是一个bean,return的写法也可以是io1 .compareTo(io2);

具体有什么不同,就由小伙伴自己尝试了,毕竟这个太简单了,就不说了。

这里再啰嗦一下说一下原理,为什么return的时候用了compareTo()方法就能排序好,理由如下:

compareTo()这个方法,它返回三种 int 类型的值: 负整数,零 ,正整数;

负整数   :   当前对象的值 < 比较对象的值 , 位置排在前;

零  :  当前对象的值 = 比较对象的值 , 位置不变;

正整数   :   当前对象的值 > 比较对象的值 , 位置排在后

最新文章

  1. js中几种实用的跨域方法原理详解(转)
  2. 字节、字、bit、byte的关系
  3. Django 1.10 中文文档------3.2.1 模型Models
  4. HTML5学习总结
  5. Huge Page 是否是拯救性能的万能良药?
  6. Windows程序控件升级==&gt;&gt;构建布局良好的Windows程序
  7. 通过定位position=&quot;fixed&quot;实现网页内容的固定层效果
  8. 让Windows7运行速度更快的BIOS优化设置教程
  9. [原创]从Oracle和Microsoft Sql Server迁移到PostgreSQL Plus Advanced Server
  10. Linux必学的60个命令【转载】
  11. 设计模式六: 模板方法(Template Method)
  12. MQ实战
  13. Mongodb: Sort operation used more than the maximum 33554432 bytes of RAM
  14. 你知道怎么用Idea抽取方法、创建class吗?
  15. python day17面向对象-组合
  16. C#深入解析委托——C#中为什么要引入委托
  17. [整理]Assembly中的DLL提取
  18. 非常酷的jQuery/HTML5图片滑块特效 带弹性菜单
  19. 硬盘分区表知识——详解硬盘MBR (转)
  20. 如何快速分析出现性能问题的Linux服务器

热门文章

  1. 利用Idea重构功能及Java8语法特性——优化深层嵌套代码
  2. WPF中如何禁用空格键(或其他键)
  3. DesignPattern系列__06迪米特原则
  4. Opengl_入门学习分享和记录_番外篇01(MacOS上如何在Xcode 开始编辑OpenGL)
  5. JavaFx应用 星之小说下载器
  6. WPF中TimeSpan的坑
  7. 机器学习tips
  8. ZooKeeper系列(一)—— ZooKeeper 简介及核心概念
  9. Javarscipt中数组或者字符串的随机排序方法
  10. ReactJS:最大更新深度超出错误