Java 中 List 元素排序

来源:互联网 发布:淘宝html5模板 编辑:程序博客网 时间:2024/06/06 12:23

转载请注明来源: 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

0 0
原创粉丝点击