List集合的排序

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

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

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

List集合的排序

List集合的排序

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

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

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

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

List集合的排序

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

List集合的排序

List集合的排序

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

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

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

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

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

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

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

上一篇:Lambda表达式 compareTo() 方法


下一篇:LString类,使用链接列表制作字符串,java