关闭

Java 中 List 元素排序

标签: javaList排序
626人阅读 评论(0) 收藏 举报
分类:

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

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

java list按照元素对象的多个字段属性进行排序
  • Enable1234___
  • Enable1234___
  • 2016-11-18 23:39
  • 7485

Java如何对ArrayList里的元素排序

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator;   public class T ...
  • xiaxiaorui2003
  • xiaxiaorui2003
  • 2014-04-22 14:53
  • 46098

对List中每个对象元素按时间顺序进行排序

import java.text.SimpleDateFormat; import java.util.*;public class ListSort { public static class UserBean { private String id; pr...
  • wangjie1616
  • wangjie1616
  • 2017-04-16 17:39
  • 2409

C# 实现List实例中实例元素的排序

C# 实现List实例中实例元素的排序实现List实例中元素的排序除了有一下两种较好的实现途径: 使需要排序的类实现IComparable<T>接口; 创建需要排序的类的一个实现ICompare<T>接口的新类,将新类的实例传入到List.Sort(newOject)方法中。...
  • nihang1234
  • nihang1234
  • 2017-02-06 15:28
  • 701

java对ArrayList中的元素自定义排序

任何类只要实现了Comparable接口ji
  • xiongyangg
  • xiongyangg
  • 2014-10-10 20:17
  • 3108

java之List排序

在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList。这些集合提供了对对象组的索引访问。他们提供了元素的添加与删除支持。然而,它们并没有内置的元素排序支持。   你能够使用java.util.Collections类中...
  • toweryangtao
  • toweryangtao
  • 2012-04-27 21:23
  • 33832

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

直接上代码,注释非常详细:-----//直接拷贝可用 package com.listsort; import java.lang.reflect.Method; import java.util.Collections; import java.util.Comparator; import ...
  • huqingpeng321
  • huqingpeng321
  • 2016-11-02 22:00
  • 3488

Java中:对已有的List<Bean>进行排序

对于Java中一个已经存在的List来说,要给他排序,传统上有两种方式:一个是Bean要实现Comparable接口,另一个是创建Comparator子类。 第一种方式需要在原有的Bean上扩展Comparable接口,一般使用不多,因为最好不要随意更改JavaBean。 第二种方式则是...
  • u012316953
  • u012316953
  • 2016-12-26 12:30
  • 484

java中对List中对象排序实现

package com.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public cl...
  • 5iasp
  • 5iasp
  • 2013-05-29 17:55
  • 21061

对List中每个对象元素按时间顺序排序

对象排序 工作中遇到一个问题:     调用别人家的接口查询数据库,可是接口中查询的结果并没有对结果进行时间排序。于是就用了一下方法对查询的结果集根据时间排序。我的项目中类结构复杂,我用简单的用户类来演示排序过程,更是希望能看的懂。    ...
  • qq_24505127
  • qq_24505127
  • 2016-12-23 12:21
  • 4630
    个人资料
    • 访问:171421次
    • 积分:2053
    • 等级:
    • 排名:千里之外
    • 原创:39篇
    • 转载:0篇
    • 译文:4篇
    • 评论:55条
    切磋技艺

    欢迎进群交流、切磋技艺


    QQ群:365532949

    博客专栏