我们很多情况下需要对List中的对象按照对象的某一属性进行排序。
可以使用JAVA API 中的void java.util.Collections.sort(List<T> list, Comparator<? super T> c) 方法
第一个参数是需要排序的list, 第二个参数为自定义的排序比较器,注意comparator是一个接口,此处需要传入一个comparator接口的实现类。(可以使用匿名内部类来构造,相当于创建了一个类实现了此接口)
java code
package com.nd.app.controller;
/**
* 小狗类
* @author JiaJiCheng
*
*/
public class Dog {
// 姓名
private String name;
// 年龄
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package com.nd.app.controller;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Test {
public static void main(String[] args) {
// 构造几个dog对象
Dog dog1 = new Dog();
Dog dog2 = new Dog();
Dog dog3 = new Dog();
Dog dog4 = new Dog();
dog1.setName("旺财");
dog1.setAge(4);
dog2.setName("小花");
dog2.setAge(2);
dog3.setAge(3);
dog3.setName("小白");
dog4.setAge(8);
dog4.setName("小虎");
// 把对象装入list
List<Dog> dogList = new ArrayList<Dog>();
dogList.add(dog1);
dogList.add(dog2);
dogList.add(dog3);
dogList.add(dog4);
Collections.sort(list, c);
// 对对象安装年龄从小到大排序
Collections.sort(dogList, new Comparator<Dog>() {
@Override
public int compare(Dog o1, Dog o2) {
int first = o1.getAge();
int second = o2.getAge();
if (first > second) { // first > second return 1 表示按照从小到大排序
return 1;
} else if (first == second) {
return 0;
} else {
return -1;
}
}
});
}
}
以上就实现了对dogList中的对象按照年龄从小到大的排序。