私が使用できる次のようなメソッドはありますか?
public List sort(List listToBeSorted, String order, String property){ }
class Person{
private String name;
private Date dob;
private int age;
}
したがって、上記のメソッドを次のように呼び出すと:
sort(myList, "ascending", "name");
person オブジェクトの「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 クラスでのみ機能します。オブジェクトの任意のリストに対して機能するメソッドが必要であり、並べ替えるオブジェクトのプロパティだけでなく、必要な順序も指定できます。