集合类List存放的数据,默认是按照放入时的顺序存放的,比如依次放入A、B、C,则取得时候,则也是A、B、C的顺序,实际场景中,有时我们需要根据自定义的规则对List中的元素进行排序,该如何实现呢?看下面小例子:
Student.java
Test.java
执行结果:
[img]http://dl.iteye.com/upload/attachment/0065/5731/d50c75d8-83af-3511-b1e9-ae29aa903d9b.png[/img]
Student.java
/**
* User: liuwentao
* Time: 12-3-27 下午8:13
*/
public class Student {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return getAge()+"";
}
}
Test.java
/**
* User: liuwentao
* Time: 12-3-27 下午8:12
*/
public class Test {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
//创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中
Student s1 = new Student();
s1.setAge(20);
Student s2 = new Student();
s2.setAge(19);
Student s3 = new Student();
s3.setAge(21);
list.add(s1);
list.add(s2);
list.add(s3);
System.out.println("排序前:"+list);
Collections.sort(list, new Comparator<Student>() {
/*
* int compare(Student o1, Student o2) 返回一个基本类型的整型,
* 返回负数表示:o1 小于o2,
* 返回0 表示:o1和o2相等,
* 返回正数表示:o1大于o2。
*/
public int compare(Student o1, Student o2) {
//按照学生的年龄进行升序排列
if (o1.getAge() > o2.getAge()) {
return 1;
}
if (o1.getAge() == o2.getAge()) {
return 0;
}
return -1;
}
});
System.out.println("排序后:"+list);
}
}
执行结果:
[img]http://dl.iteye.com/upload/attachment/0065/5731/d50c75d8-83af-3511-b1e9-ae29aa903d9b.png[/img]