您的位置:首页 > 编程语言 > Java开发

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

2014-09-27 21:09 706 查看
需求:对集合中的数据按某种方式进行排序输出,比如集合中存储的对象是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;
}

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

Collections.sort(list);

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: