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

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

Collections.sort(list);

则可以实现

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

 
   
 
   


 
 








你可能感兴趣的:(java 实现List对象中按某种方式进行排序)