Bạn có thể làm các loại giảm dần của một lớp người dùng định nghĩa theo cách này trọng phương pháp compare(),
Collections.sort(unsortedList,new Comparator<Person>() {
@Override
public int compare(Person a, Person b) {
return b.getName().compareTo(a.getName());
}
});
Hoặc bằng cách sử dụng Collection.reverse()
để sắp xếp giảm dần khi người dùng Hoàng tử được đề cập trong his comment.
Và bạn có thể làm sắp xếp tăng dần như thế này,
Collections.sort(unsortedList,new Comparator<Person>() {
@Override
public int compare(Person a, Person b) {
return a.getName().compareTo(b.getName());
}
});
Thay thế mã trên với một biểu thức Lambda (Java 8 trở đi), chúng tôi có được súc tích:
Collections.sort(personList, (Person a, Person b) -> b.getName().compareTo(a.getName()));
Tính đến Java 8, Danh sách có phương thức sort() mất Comparator làm tham số (ngắn gọn hơn):
personList.sort((a,b)->b.getName().compareTo(a.getName()));
Ở đây, a
và b
được suy ra dưới dạng Kiểu người theo biểu thức lambda.
Bây giờ, đó là một ví dụ hơi khó hiểu, vì String thực hiện Comparable. Và đó là -1 không phải là điều đáng sợ nhất. – Bozho
Đối số tốt nhất so với -1 * x là '-1 * Integer.MIN_VALUE == Integer.MIN_VALUE'. Mà không phải là những gì bạn muốn. Tôi đổi chỗ các đối số dễ dàng hơn. –
Và tôi đoán đó là một ReverseComparator, thay vì Reserve ... –