`

用Java集合中的Collections.sort方法对list排序的两种方法

    博客分类:
  • Java
 
阅读更多

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

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

 

01 <strong>/**
02 * 根据order对User排序
03 */
04 public class User implements Comparable{
05     private String name;
06     private Integer order;
07     public String getName() {
08         return name;
09     }
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 </strong>

 

 

测试一下:

 

01 <strong>public class Test{
02  
03     public static void main(String[] args) {
04         User user1 = new User();
05         user1.setName("a");
06         user1.setOrder(1);
07         User user2 = new User();
08         user2.setName("b");
09         user2.setOrder(2);
10         List list = new ArrayList();
11         //此处add user2再add user1
12         list.add(user2);
13         list.add(user1);
14         Collections.sort(list);
15         for(User u : list){
16             System.out.println(u.getName());
17         }
18     }
19 }</strong>

输出结果如下
a
b
 

 

 

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

 

01 <strong>/**
02 * 根据order对User排序
03 */
04 public class User { //此处无需实现Comparable接口
05     private String name;
06     private Integer order;
07     public String getName() {
08         return name;
09     }
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 }</strong>

主类中这样写即可:

 

 

01 <strong>public class Test{
02     public static void main(String[] args) {
03         User user1 = new User();
04         user1.setName("a");
05         user1.setOrder(1);
06         User user2 = new User();
07         user2.setName("b");
08         user2.setOrder(2);
09         List list = new ArrayList();
10         list.add(user2);
11         list.add(user1);
12          
13         Collections.sort(list,new Comparator(){
14             public int compare(User arg0, User arg1) {
15                 return arg0.getOrder().compareTo(arg1.getOrder());
16             }
17         });
18         for(User u : list){
19             System.out.println(u.getName());
20         }
21     }
22 }
23 </strong>

 

 

输出结果如下
a
b

前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁

多字段的场合: 

01 <strong>Collections.sort(list,new Comparator(){
02             public int compare(User arg0, User arg1) {
03  //            第一次比较专业
04                 int i = arg0.getOrder().compareTo(arg1.getOrder());
05  
06 //            如果专业相同则进行第二次比较
07             if(i==0){
08 //                第二次比较
09                 int j=arg0.getXXX().compareTo(arg1.getXXX());
10 //                如果学制相同则返回按年龄排序
11                 if(j==0){
12                     return arg0.getCCC().compareTo(arg1.getCCC());
13                 }
14                 return j;
15             }
16             return i;
17             }
18         });
19  
20 </strong>

 

分享到:
评论

相关推荐

    java List 排序 Collections.sort

    总结起来,`Collections.sort()`是Java中对List进行排序的标准工具,它支持自然排序和自定义排序。了解其工作原理和优化技巧,可以帮助我们在编程实践中更高效地处理数据。通过阅读和理解`Collections.sort()`的源码...

    用Java集合中的Collections.sort方法如何对list排序(两种方法)

    本文将深入探讨两种使用Collections.sort方法对List排序的方法。 首先,第一种方法是让List中的对象实现Comparable接口。Comparable接口定义了一个自然排序的规则,使得实现了该接口的类的对象可以进行比较并排序。...

    详解Java中Collections.sort排序

    总结来说,`Collections.sort()`方法是Java中对列表进行排序的核心工具。它既可以使用元素的自然顺序,也可以通过`Comparator`接口自定义排序规则。在编写程序时,灵活运用`Collections.sort()`和`Comparator`可以...

    Java Arrays.sort和Collections.sort排序实现原理解析

    Java中的`Arrays.sort()`和`Collections.sort()`是两个常用的排序函数,它们分别用于对数组和集合进行排序。这两个函数在内部实现上有所不同,但都基于高效的排序算法。 首先,`Collections.sort()`方法在处理列表...

    java 使用Collections类对List的排序操作

    总的来说,`Collections` 类提供的排序功能使得在 Java 中对 `List` 进行操作变得更加便捷,无论是自然排序还是定制排序,都可以轻松实现。同时,随着 Java 8 及更高版本的引入,流API也提供了新的排序方式,开发者...

    java集合某个字段按照中文拼音排序.docx

    对Java集合中的某个字段按照中文拼音排序可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用Comparable接口 在Java中,我们可以使用Comparable接口来实现自定义排序。例如,我们可以创建一个Record类,...

    详解java Collections.sort的两种用法

    Java Collections.sort 是 Java 集合框架中的一种静态方法,用于对 List 类型进行排序。该方法有两种参数形式,分别是对基本类型和自定义类的排序。在本文中,我们将通过示例代码来详细介绍这两种用法。 基本类型的...

    java 集合分组与排序

    Java集合框架提供两种主要的排序方式:`Collections.sort()`方法和流API的`sorted()`方法。 - `Collections.sort()`:适用于`List`接口的实现类,如`ArrayList`和`LinkedList`。它直接在原地对列表进行排序,无需...

    JAVA中Collections工具类sort()排序方法

    在Java编程中,Collections工具类提供了许多方便的集合操作,其中`sort()`方法是一个非常重要的功能,用于对List类型的集合进行排序。本文将详细介绍`Collections.sort()`方法的两种使用方式及其示例。 ### 一、...

    Java集合排序及java集合类详解.pdf

    例如,创建ArrayList或HashSet的实例,向其中添加元素,通过迭代器遍历,以及使用Collections.sort方法对集合进行排序等。文档可能还提到了集合的线程安全问题,以及如何在多线程环境下安全地操作集合,这是理解Java...

    java集合排序方法总结共13页.pdf.zip

    Java中的`Collections.sort()`方法是最常用的排序工具,它可以对List接口的实现类进行原地排序。例如,我们可以对ArrayList或LinkedList调用此方法,排序会按照元素的自然顺序或者自定义比较器进行。 ```java List...

    Java Generics and Collections.chm

    例如,`Collections.sort()` 可用于对列表进行排序,`Map.merge()` 可以原子性地更新键值对。 通过深入学习《Java Generics and Collections》,开发者不仅可以掌握如何编写类型安全的代码,还能有效地组织和操作...

    listview按序排列显示

    `Collections.sort()`是Java中对List进行排序的方法,它接受一个List作为参数,并根据List中元素的自然顺序或者自定义比较器进行排序。在这个例子中,Map的键(key)通常是字符串或其他实现了Comparable接口的对象,...

    数据结构之JAVA排序JAVASORT.pdf

    2. **集合排序**:对于集合,Java的`Collections.sort()`方法可以对List接口的实现类进行排序。同样,这个方法内部也实现了高效的排序算法,但具体实现可能会根据不同的集合类型有所不同。 接下来,我们讨论几种...

    java sort排序算法实例完整代码

    Java中的`sort`排序算法是Java集合框架的重要组成部分,主要用于对List接口的实现类进行排序。这个算法在Java中主要体现在`java.util.Arrays`和`java.util.Collections`两个类中,提供了对数组和集合的排序功能。...

    java中List对象列表实现去重或取出及排序的方法

    在Java中,对List对象列表实现去重或取出及排序是一种常见的操作。下面将详细介绍相关的方法和实现。 1. 实体类重写equals和hashCode方法 在Java中,想要去重List对象列表,首先需要重写实体类的equals和hashCode...

    java冒泡排序java冒泡排序集锦方法!

    `Collections.sort()` 是 Java 中一种快速且高效地对集合(如 ArrayList)进行排序的方法。可以自定义比较器来指定排序规则。 **示例代码分析**: ```java public class Main { public static void main(String[] ...

    Java 集合框架介绍.ppt

    例如,`Collections.sort()`可以对`List`进行排序,`Collections.binarySearch()`可以在排序后的`List`中查找元素。 - 集合框架还支持泛型,允许在编译时指定集合中存储的元素类型,增强了类型安全。 6. **多线程...

    java版本List中对象多属性排序.rar

    在Java编程中,对List集合中的对象进行多属性排序是一项常见的任务。这通常涉及到自定义比较逻辑,以满足复杂的数据排序需求。在这个“java版本List中对象多属性排序.rar”压缩包中,我们可能找到了一个关于如何在...

Global site tag (gtag.js) - Google Analytics