Есть ли такой метод, который я могу использовать, чтобы я мог передавать любой список любых объектов, и он вернет отсортированный список в том порядке, который я хочу?Сортировка списка объектов
сортировки общественного List (Список listToBeSorted, порядок String, String свойство) { }
class Person{
private String name;
private Date dob;
private int age;
}
Так что, если я называю выше метод следующим образом:
sort(myList, "ascending", "name");
Он будет сортировать список в порядке возрастания свойства «name» объекта person.
Я попытался использовать компаратор следующим образом, но не смог получить его в любом месте рядом с тем, что я действительно хотел.
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);
EDIT:
Пример, который я дал работает отлично. Но он работает только для класса Person. Мне нужен метод, который будет работать для любого списка объектов, и я могу указать, какой заказ я хочу, а также свойство объекта для сортировки.
В вашей реализации 'Comparator' должно быть что-то не так. Обратите внимание, что вы можете выполнять более сложные правила внутри реализации 'Comparator'. –
Каков был результат? – arynaq
Ну, это должно сработать ... Можете ли вы привести пример данных, где это не так? – fge