最近在写需求时,将某张表中的短信信息拿出,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
类型的值: 负整数,零 ,正整数;
负整数 : 当前对象的值 < 比较对象的值 , 位置排在前;
零 : 当前对象的值 = 比较对象的值 , 位置不变;
正整数 : 当前对象的值 > 比较对象的值 , 位置排在后