`
bugyun
  • 浏览: 551472 次
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
 
阅读更多

 

转:http://www.blogjava.net/landor2004/articles/sort.html

 

用Collections.sort方法对list排序有两种方法
第一种是list中的对象实现Comparable接口,如下:

/**
* 根据order对User排序
*/
public class User implements Comparable<User>{
    private String name;
    private Integer order;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getOrder() {
        return order;
    }
    public void setOrder(Integer order) {
        this.order = order;
    }
    public int compareTo(User arg0) {
        return this.getOrder().compareTo(arg0.getOrder());
    }
}

测试一下:

public class Test{

    public static void main(String[] args) {
        User user1 = new User();
        user1.setName("a");
        user1.setOrder(1);
        User user2 = new User();
        user2.setName("b");
        user2.setOrder(2);
        List<User> list = new ArrayList<User>();
        //此处add user2再add user1
        list.add(user2);
        list.add(user1);
        Collections.sort(list);
        for(User u : list){
            System.out.println(u.getName());
        }
    }
}

输出结果如下
a
b

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

/**
* 根据order对User排序
*/
public class User { //此处无需实现Comparable接口
    private String name;
    private Integer order;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getOrder() {
        return order;
    }
    public void setOrder(Integer order) {
        this.order = order;
    }
}

主类中这样写即可:

public class Test{
    public static void main(String[] args) {
        User user1 = new User();
        user1.setName("a");
        user1.setOrder(1);
        User user2 = new User();
        user2.setName("b");
        user2.setOrder(2);
        List<User> list = new ArrayList<User>();
        list.add(user2);
        list.add(user1);
       
        Collections.sort(list,new Comparator<User>(){
            public int compare(User arg0, User arg1) {
                return arg0.getOrder().compareTo(arg1.getOrder());
            }
        });
        for(User u : list){
            System.out.println(u.getName());
        }
    }
}

输出结果如下
a
b

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

择优用之。

分享到:
评论

相关推荐

    java List 排序 Collections.sort

    当我们需要对List中的元素进行排序时,`Collections.sort()`方法就派上了用场。这个方法能够根据元素的自然顺序或者自定义的比较器进行排序。本文将深入探讨`Collections.sort()`的使用、原理以及如何自定义排序规则...

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

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

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

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

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

    1. **自然排序**:如果 `List` 中的元素是实现了 `Comparable` 接口的对象,那么可以使用 `Collections.sort()` 方法进行自然排序。`Comparable` 接口定义了一个 `compareTo()` 方法,该方法用于比较对象之间的大小...

    详解Java中Collections.sort排序

    `Collections.sort()`有两种主要的排序方式:一种是基于元素的自然顺序,另一种是通过自定义比较器`Comparator`。 首先,我们来详细讲解`Collections.sort()`的默认排序机制。当传入的列表元素实现了`Comparable`...

    详解java Collections.sort的两种用法

    该方法有两种参数形式,分别是对基本类型和自定义类的排序。在本文中,我们将通过示例代码来详细介绍这两种用法。 基本类型的排序 Collections.sort 方法的第一个参数形式是 public static ...

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

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

    listview按序排列显示

    在这个场景下,我们使用`Collections.sort()`函数对一个包含Map对象的List进行排序,然后将排序后的数据适配到ListView中。以下是关于这个主题的详细解释。 **一、Map与List的关系** 在Java中,Map是一种键值对的...

    c# List类排序方法

    `Sort`方法有多个重载版本,其中最简单的一个是不带任何参数的版本`List&lt;T&gt;.Sort()`。 然而,在尝试使用`Sort()`方法对`List&lt;Student&gt;`进行排序时,会遇到问题。这是因为`Sort()`方法默认使用元素的自然顺序进行...

    单词按首字母排序的两种方法

    本文将详细介绍如何使用Java对字符串数组按照单词的首字母进行排序的两种方法,并通过代码示例加以说明,帮助读者深入理解并掌握这些技巧。 ### 方法一:使用`Arrays.sort()`方法 在Java中,`java.util.Arrays`类...

    C#使用sort方法对数组进行快速排序

    在C#编程语言中,`Sort`方法是一个非常重要的功能,它被广泛应用于对各种数据结构,如数组、列表等进行排序。这个方法是通过.NET框架中的`System.Collections.Generic`命名空间下的`List&lt;T&gt;`类提供的,同时也存在于`...

    java中list排序

    在 Java 中,对 List 排序可以使用 Collections.sort(list) 方法,但是这种方法只能对基本类型的 List 进行排序,如果 List 中包含的是对象,那么这种方法就不行了。这时需要使用Comparator接口来实现排序。 ...

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

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

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

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

    最快的排序算法 java最快的排序-在Java中对列表进行排序的最快方法,排序算法数据结构

    在上述代码中,使用了 List 接口来存储 ServerInfo 对象列表,并使用了 Collections.sort() 方法来对列表进行排序。List 接口提供了对元素的添加、删除和遍历等操作,可以满足基本的数据存储需求。 在实际应用中,...

    HASHMAP排序功能描述

    有两种主要方法可以对HashMap进行排序: - **使用LinkedHashMap** LinkedHashMap是HashMap的一个子类,它维护了元素的插入顺序或者访问顺序。如果想要按照插入顺序排序,直接使用LinkedHashMap即可。如果需要按照...

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

    // 对List排序 List&lt;Integer&gt; list = Arrays.asList(5, 3, 8, 1, 9); Collections.sort(list); System.out.println(list); // 使用Comparator自定义排序规则 List&lt;Person&gt; people = Arrays.asList( new ...

    Android sort按时间排序

    这里可以使用`Collections.sort()`方法对Map的键值对进行排序。`Collections.sort()`需要一个List参数,所以我们需要先将Map的键转换成List,然后提供一个Comparator来比较两个时间戳的先后顺序。 Comparator的实现...

    JTable表头排序的两种方法

    本篇文章将详细介绍如何实现`JTable`表头的排序功能,并提供两种不同的实现方法。 ### 方法一:使用DefaultTableColumnModel的Comparator `DefaultTableColumnModel`是`JTable`默认使用的列模型,它支持列的排序...

    LIST泛型排序

    要对`List&lt;User&gt;`进行排序,我们需要使用Java的`Collections.sort()`方法。然而,`Collections.sort()`默认只能对原始类型(如int、char等)或实现了`Comparable`接口的对象进行排序。对于自定义的泛型对象,我们...

Global site tag (gtag.js) - Google Analytics