`
jzhua2006
  • 浏览: 304532 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java中Collections.sort()函数的用法

 
阅读更多
用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中Collections.sort排序详解

    Java中的Collections.sort排序是Java.util.Collections类中的一个静态方法,用于对列表进行排序。下面将详细介绍Collections.sort排序的使用和实现机制。 Collections.sort()方法的使用: Collections.sort()方法...

    java中Collections.sort排序函数用法详解

    在Java编程语言中,`Collections.sort()` 是一个非常重要的函数,它用于对集合中的元素进行排序。这个函数是 `java.util.Collections` 类的一个静态方法,适用于列表(List)类型的集合。`Collections.sort()` 可以...

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

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

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

    在Java编程中,集合框架是处理数据的重要工具,而Collections.sort方法则是对列表(List)进行排序的关键函数。本文将深入探讨两种使用Collections.sort方法对List排序的方法。 首先,第一种方法是让List中的对象实现...

    listview按序排列显示

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

    Java-Java函数式编程教程

    例如,Collections.sort()方法接受一个Comparator实例,这是一个高阶函数的例子,因为它接受一个函数作为参数来定义元素的排序顺序。 6. **函数式编程的优点**: - 更少的副作用:函数式编程倾向于避免改变状态,...

    Java Generics and Collections.chm

    《Java Generics and Collections》是Java开发者必备的参考资料,它深入探讨了Java编程中的泛型(Generics)和集合(Collections)这两个核心概念。在Java编程中,泛型和集合框架是提高代码效率、可读性和类型安全性...

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

    Java的`sort`方法采用了一种称为TimSort的稳定排序算法,由Tim Peters在Python中设计,后被引入Java。TimSort是一种混合排序算法,结合了插入排序(对于小数组高效)和归并排序(保证稳定性及良好性能)的特点。 ##...

    Java 生成随机字符串数组的实例详解

    Collections.sort()是Java中的一种静态方法,用于对集合进行排序。Collections.sort()方法可以对List、Set等集合进行排序,按照自然顺序或自定义的Comparator进行排序。 知识点6:foreach foreach是Java中的一种...

    java performance12

    这里提到了可以使用 `java.util.Arrays` 和 `java.util.Collections` 提供的方法来实现高效拷贝。下面详细介绍这两种方法: - **使用 `java.util.Arrays.copyOf()`:** `java.util.Arrays.copyOf()` 方法是拷贝...

    77丨开源实战一(下):通过剖析JavaJDK源码学习灵活应用设计模式1

    在本节课程中,我们将深入探讨模板模式以及其在Java JDK中的实际应用,特别是通过分析Collections.sort()函数的实现。模板模式是一种行为设计模式,它允许我们在定义算法的骨架的同时,延迟部分步骤的具体实现,使得...

    28个java常用的工具类

    在Java编程语言中,工具类(Utility Class)是那些提供了静态方法或常量,用于执行特定任务或提供通用功能的类。这些类不包含公共构造器,通常是为了避免实例化,因为它们的设计目的就是作为静态服务。以下是28个...

    Java实现类排序

    Java中的排序主要依赖于`java.util.Arrays`类和`java.util.Collections`类提供的方法。对于数组,我们可以使用`Arrays.sort()`方法;对于集合,我们可以使用`Collections.sort()`方法。这两个方法都可以对基本类型和...

    Java容易被忽视的API

    `java.util.Arrays.sort()` 和 `java.util.Collections.sort()` 是两个主要的排序函数,它们提供了多种重载形式,以适应不同的数据类型和排序需求。 1. `Arrays.sort(int[])` 和 `Arrays.sort(int[], int, int)` ...

    JAVA_比较器讲解

    - 当我们使用`Collections.sort()`或`Arrays.sort()`方法对对象列表或数组进行排序时,如果默认的自然顺序不适合我们的需求,就可以提供一个实现了`Comparator`接口的类实例作为参数,自定义比较规则。 2. 使用...

    java8demo.zip

    Collections.sort(names, String::compareToIgnoreCase); ``` 4. **默认方法**:在接口中引入了默认方法,允许在不破坏现有实现的情况下为接口添加新方法。这使得在库升级时,不需修改所有实现了该接口的类。例如...

    java中的排序.ppt

    Java 中的 Arrays 类提供了对这些类型的 sort 方法,可以用来对简单类型的数组进行排序。例如: ```java int[] arr = {2, 3, 1, 10, 7, 4}; System.out.print("before sort: "); for (int i = 0; i &lt; arr.length; i...

    28个java常用的工具类源码

    每个工具类都有其特定的应用场景和使用方法,理解并熟练运用这些工具类是成为Java开发高手的重要一步。在实际项目中,合理地利用这些工具类可以有效地提高代码质量和运行效率,同时减少错误和维护成本。通过阅读源码...

    java中的回调函数.docx

    Java中的回调函数是一种设计模式,它允许一个对象在特定事件发生时调用另一个对象的方法。在Java中,回调机制通常通过接口实现,因为Java不支持像C++那样的指针。以下是对回调函数及其在Java中如何工作的详细说明: ...

    ACM中java的使用.pdf

    `Arrays.sort()`方法可用于对数组进行排序,而`Collections.sort()`用于列表。`BinarySearch`方法可以对已排序的数组或列表进行二分查找。 9. **算法实现**: Java可以方便地实现各种算法,如动态规划、贪心、...

Global site tag (gtag.js) - Google Analytics