Java 中 List 元素排序

原创 2016年06月01日 21:06:46

转载请注明来源: http://blog.csdn.net/kjunchen/article/details/51559020

Java 中 List 元素排序

对 List 中的元素进行排序可以使用 java.util.Collections 类中的sort()方法。既可以给方法传递一个 List 对象,也可以传递一个 List 和一个 Comparator 。如果列表中的元素全都是相同类型的类,并且这个类实现了 Comparable 接口,可以简单的调用 Collections.sort() 。如果这个类没有实现 Comparator ,你也可以传递一个 Comparator 到方法 sort() 中,进行排序。如果你不想使用缺省的分类顺序进行排序,你同样可以传递一个 Comparator 到方法 sort() 中来进行排序。

方式一: List 中对象实现 Comparable 接口

1、 创建对象并实现 Comparable 接口

public class Cat implements Comparable<Cat> {
    private String name;
    private Integer order;

    public Cat(String name, Integer order) {
        super();
        this.name = name;
        this.order = 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;
    }

    @Override
    public int compareTo(Cat o) {
        return this.getOrder().compareTo(o.getOrder());
    }

    @Override
    public String toString() {
        return "Cat [name=" + name + ", order=" + order + "]";
    }
}

2、 调用 Collections.sort(List) 方法进行排序

public static void main(String[] args) {
    List<Cat> catList = new ArrayList<>();
    Cat cat1 = new Cat("name1", 1);
    Cat cat2 = new Cat("name2", 2);
    Cat cat3 = new Cat("name3", 3);
    catList.add(cat3);
    catList.add(cat1);
    catList.add(cat2);
    System.out.println("未排序: " + catList.toString());
    //调用 Collections.sort() 方法进行排序
    Collections.sort(catList);
    System.out.println("排序后: " + catList.toString());
}

执行结果为:

未排序: [Cat [name=name3, order=3], Cat [name=name1, order=1], Cat [name=name2, order=2]]
排序后: [Cat [name=name1, order=1], Cat [name=name2, order=2], Cat [name=name3, order=3]]

方式二: 重载 Collections.sort() 方法

1、 创建对象

public class Dog {
    private String name;
    private Integer order;

    public Dog(String name, Integer order) {
        super();
        this.name = name;
        this.order = 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;
    }

    @Override
    public String toString() {
        return "Dog [name=" + name + ", order=" + order + "]";
    }

}

2、 调用 Collections.sort(List, Comparator) 方法进行排序

public static void main(String[] args) {
        List<Dog> dogList = new ArrayList<>();
        Dog dog1 = new Dog("name1", 1);
        Dog dog2 = new Dog("name2", 2);
        Dog dog3 = new Dog("name3", 3);
        dogList.add(dog3);
        dogList.add(dog1);
        dogList.add(dog2);
        System.out.println("未排序: " + dogList.toString());
        //调用 Collections.sort() 方法进行排序,传入List 和 Comparator
        Collections.sort(dogList, new Comparator<Dog>() {
            @Override
            public int compare(Dog o1, Dog o2) {
                return o1.getOrder().compareTo(o2.getOrder());
            }
        });
        System.out.println("排序后: " + dogList.toString());
    }

执行结果为:

未排序: [Dog [name=name3, order=3], Dog [name=name1, order=1], Dog [name=name2, order=2]]
排序后: [Dog [name=name1, order=1], Dog [name=name2, order=2], Dog [name=name3, order=3]]

欢迎加QQ群交流: 365532949
Homepage: http://junkchen.com

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

SQL优化实战:外层查询条件放到内层查询中(predicate push down)

有了上次安装失败的经验后,这次安装就顺利多了。 学习Python从安装各种模块开始。 1、通过pip来安装IPy模块 C:\Users\Administrator>pip install IPy ...
  • yupeigu
  • yupeigu
  • 2016年05月09日 14:14
  • 1242

设计模式总结

所有的设计模式都在围绕着“高内聚,低耦合,提高复用,提高可维护性”三大类模式:创建型、结构型、行为型1.创建型:1.1工厂模式(Factory)将定义一个用于创建对象的接口,让子类决定实例化哪一个类。...
  • csp277
  • csp277
  • 2015年09月30日 15:26
  • 202

Java中集合List按照集合内实体类元素的指定字段排序方法

直接上代码,注释非常详细:-----//直接拷贝可用 package com.listsort; import java.lang.reflect.Method; import java.util...

java list按照元素对象的指定多个字段属性进行排序

java list按照元素对象的多个字段属性进行排序

【LeetCode-面试算法经典-Java实现】【082-Remove Duplicates from Sorted List II(排序链表中删除重复元素II)】

【082-Remove Duplicates from Sorted List II(排序链表中删除重复元素II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Give...

java list按照元素对象的指定多个字段属性进行排序

ListUtils.Java---功能类 [java] view plain copy package com.enable.common.utils;...

java list按照元素对象的指定多个字段属性进行排序

见: http://blog.csdn.net/enable1234___/article/details/53224740 ListUtils.Java---功能类 [ja...

Java中的对List中元素进行自定义排序

1 List中的元素没有实现Comparable import java.util.ArrayList; import java.util.Collections; import java.util....

Java List/ArrayList操作示例----添加/排序/取子块/删除/追加元素

//示例演示了对 List/ArrayList元素操作,仅供参考,

Java中的List按照元素的属性进行排序

主要用到: Collections.sort()方法:   1. JavaBean —— Content.java: Java代码   package com.hm...
  • scx0920
  • scx0920
  • 2016年01月27日 14:33
  • 125
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 中 List 元素排序
举报原因:
原因补充:

(最多只允许输入30个字)