有没有我可以使用的如下方法,这样我就可以传递任何对象的任何列表,它会按照我想要的顺序返回一个排序列表?
public List sort(List listToBeSorted, String order, String property){ }
class Person{
private String name;
private Date dob;
private int age;
}
因此,如果我这样调用上述方法:
sort(myList, "ascending", "name");
它将按人员对象的“名称”属性的升序对列表进行排序。
我尝试使用 Comparator 如下,但无法让它接近我真正想要的。
public class PersonComparator {
public static final Comparator<Person> NAME_COMPARATOR = new Comparator<Person>() {
@Override
public int compare(Person object1, Person object2) {
return object1.getName().compareToIgnoreCase(object2.getName());
}
};
public static final Comparator<Person> DOB_COMPARATOR = new Comparator<Person>() {
@Override
public int compare(Person object1, Person object2) {
return object1.getDob().compareTo(object2.getDob());
}
};
public static final Comparator<Person> AGE_COMPARATOR = new Comparator<Person>() {
@Override
public int compare(Person object1, Person object2) {
return object1.getAge().compareTo(object2.getAge());
}
};
}
并使用如下比较器:
List<Person> myList = new ArrayList<Person>();
Collections.sort(myList, PersonComparator.NAME_COMPARATOR);
编辑:
我给出的例子很好用。但它只适用于 Person 类。我想要一种适用于任何对象列表的方法,并且我可以指定我想要的顺序以及要排序的对象的属性。