java 实现List对象中按某种方式进行排序

来源:互联网 发布:python 绘制混淆矩阵 编辑:程序博客网 时间:2024/05/05 13:48

需求:对集合中的数据按某种方式进行排序输出,比如集合中存储的对象是Person,现在按person的年龄从大到小输出,首先使用List集合进行存储,在java中如果要进行对对象进行比较的话,则实现Comparable接口,现在看看Comparable接口文档中怎么描述

接口 Comparable<T> 
类型参数:
T - 可以与此对象进行比较的那些对象的类型

实现Comparable接口必须实现CompareTo(T o)

比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数

现在进行代码测试
Person.java
public class Person implements Comparable<Person>{private int age;private String name;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Person(int age, String name) {super();this.age = age;this.name = name;}@Overridepublic int compareTo(Person o) {if(this.age>o.age){return 1;}else if(this.age<o.age){return -1;}return 0;}}

PersonTest.java
public class PersonTest {public static void main(String[] args) {Person p1 = new Person(24,"zhangsan");Person p2 = new Person(25,"zhangsan1");Person p3 = new Person(23,"zhangsan2");Person p4 = new Person(22,"zhangsan3");List<Person> persons = new ArrayList<Person>();persons.add(p2);persons.add(p1);persons.add(p4);persons.add(p3);for(int i=0;i<persons.size();i++){Person p = persons.get(i);System.out.println(p.getName()+"::::::"+p.getAge());}}}

打印结果:
zhangsan1::::::25
zhangsan::::::24
zhangsan3::::::22
zhangsan2::::::23
通过打印的结果发现集合中的数据并没有按照年龄进行排序,那是因为List集合内部并没有实现排序,如果还要按年龄输出,必须对集合进行排序

Collections.sort(list);

则可以实现

如果使用TreeSet集合就可以对他进行排序,因为TreeSet集合内部实现了对对象的排序









0 0