java List 排序 Collections.sort()

简介:

有的时候,我们需要对获取的list集合进行排序,然后输出。那么我们一般会用到Collections.sort。


用Collections.sort方法对list排序有两种方法

 第一种是list中的对象实现Comparable接口,如下:


[java] view plain copy

  1. /** 

  2.  * 根据order对User排序 

  3. */  

  4. public class User implements Comparable<User>{  

  5.      private String name;  

  6.      private Integer order;  

  7.      public String getName() {  

  8.          return name;  

  9.      }  

  10.      public void setName(String name) {  

  11.          this.name = name;  

  12.      }  

  13.      public Integer getOrder() {  

  14.          return order;  

  15.      }  

  16.      public void setOrder(Integer order) {  

  17.          this.order = order;  

  18.      }  

  19.      public int compareTo(User arg0) {  

  20.          return this.getOrder().compareTo(arg0.getOrder());  

  21.      }  

  22.  } 测试一下:  

  23. public class Test{  

  24.   

  25.      public static void main(String[] args) {  

  26.          User user1 = new User();  

  27.          user1.setName("a");  

  28.          user1.setOrder(1);  

  29.          User user2 = new User();  

  30.          user2.setName("b");  

  31.          user2.setOrder(2);  

  32.          List<User> list = new ArrayList<User>();  

  33.          //此处add user2再add user1  

  34.         list.add(user2);  

  35.          list.add(user1);  

  36.          Collections.sort(list);  

  37.          for(User u : list){  

  38.              System.out.println(u.getName());  

  39.          }  

  40.      }  

  41.  }   





输出结果如下
 a
 b

第二种方法是根据Collections.sort重载方法来实现,例如:

[java] view plain copy

  1. /** 

  2.  * 根据order对User排序 

  3. */  

  4. public class User { //此处无需实现Comparable接口  

  5.     private String name;  

  6.      private Integer order;  

  7.      public String getName() {  

  8.          return name;  

  9.      }  

  10.      public void setName(String name) {  

  11.          this.name = name;  

  12.      }  

  13.      public Integer getOrder() {  

  14.          return order;  

  15.      }  

  16.      public void setOrder(Integer order) {  

  17.          this.order = order;  

  18.      }  

  19.  }  

  20.   

  21.  主类中这样写即可(HastSet——>List——>sort进行排序):  

  22. public class Test {  

  23.     public static void main(String[] args) {  

  24.         User user1 = new User();  

  25.            user1.setName("a");  

  26.       user1.setOrder(1);  

  27.       User user2 = new User();  

  28.       user2.setName("b");  

  29.       user2.setOrder(2);  

  30.   

  31.         Set<User> Hset = new HashSet<User>(); //set不能存放重复的对象 

  32.         Hset.add(user2);  

  33.         Hset.add(user1);  

  34.   

  35.         List<User> list = new ArrayList<User>();  

  36.         list.addAll(Hset);  

  37.   

  38.   

  39.         Collections.sort(list,new Comparator<User>(){  

  40.             public int compare(User arg0, User arg1) {  

  41.                 return arg1.getOrder().compareTo(arg0.getOrder());    

  42.             }  

  43.         });  

  44.         for(User u : list){  

  45.             System.out.println(u.getName());  

  46.         }  

  47.     }  




输出结果如下:

a
b



默认为升序,将。return arg0.getOrder().compareTo(arg1.getOrder());    改为:
return arg1.getOrder().compareTo(arg0.getOrder());   
就成降序的了。


      本文转自建波李 51CTO博客,原文链接:http://blog.51cto.com/jianboli/1890628,如需转载请自行联系原作者




相关文章
|
2月前
|
存储 安全 Java
【Java集合类面试二十五】、有哪些线程安全的List?
线程安全的List包括Vector、Collections.SynchronizedList和CopyOnWriteArrayList,其中CopyOnWriteArrayList通过复制底层数组实现写操作,提供了最优的线程安全性能。
|
2月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
7天前
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
10 3
|
2月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
32 5
|
1月前
|
Java API 开发者
代码小妙招:用Java轻松获取List交集数据
在Java中获取两个 `List`的交集可以通过 `retainAll`方法和Java 8引入的流操作来实现。使用 `retainAll`方法更为直接,但会修改原始 `List`的内容。而使用流则提供了不修改原始 `List`、更为灵活的处理方式。开发者可以根据具体的需求和场景,选择最适合的方法来实现。了解和掌握这些方法,能够帮助开发者在实际开发中更高效地处理集合相关的问题。
29 1
|
2月前
|
存储 Java
Java中ArrayList 元素的排序
本文提供了Java中根据`ArrayList`元素的某个属性进行排序的示例代码,包括实现`Comparable`接口和重载`compareTo`方法,然后使用`Collections.sort`方法进行排序。
|
2月前
|
存储 Java API
【Java高手必备】揭秘!如何优雅地对List进行排序?掌握这几种技巧,让你的代码瞬间高大上!
【8月更文挑战第23天】本文深入探讨了Java中对List集合进行排序的各种方法,包括使用Collections.sort()、自定义Comparator以及Java 8的Stream API。通过示例代码展示了不同情况下如何选择合适的方法:从简单的整数排序到自定义类对象的排序,再到利用Comparator指定特殊排序规则,最后介绍了Stream API在排序操作中的简洁应用。理解这些技术的区别与应用场景有助于提高编程效率。
22 4
|
2月前
|
存储 Java
|
2月前
|
搜索推荐 算法 Java
堆排序实战:轻松实现高效排序,附详细Java代码
嗨,大家好!我是小米,一名热爱技术分享的程序员。今天要带大家了解堆排序——一种基于二叉堆的数据结构,具有O(n log n)时间复杂度的选择排序算法。堆排序分为构建大顶堆和排序两个阶段:先建堆使根节点为最大值,再通过交换根节点与末尾节点并调整堆来逐步排序。它稳定高效,空间复杂度仅O(1),适合对稳定性要求高的场合。虽然不如快速排序快,但在避免递归和节省空间方面有优势。一起动手实现吧!如果有任何疑问,欢迎留言交流!
58 2
|
2月前
|
存储 Java
下一篇
无影云桌面