Se puede hacer descender el tipo de una clase definida por el usuario de esta manera reemplazando el método compare(),
Collections.sort(unsortedList,new Comparator<Person>() {
@Override
public int compare(Person a, Person b) {
return b.getName().compareTo(a.getName());
}
});
O utilizando Collection.reverse()
para ordenar descendiendo como usuario Prince mencionado en his comment.
Y lo puede hacer la clasificación ascendente como este,
Collections.sort(unsortedList,new Comparator<Person>() {
@Override
public int compare(Person a, Person b) {
return a.getName().compareTo(b.getName());
}
});
reemplazar el código anterior con una expresión Lambda (Java 8 en adelante) obtenemos concisa:
Collections.sort(personList, (Person a, Person b) -> b.getName().compareTo(a.getName()));
A partir de Java 8, Lista tiene sort() método que toma Comparator como parámetro (más concisa):
personList.sort((a,b)->b.getName().compareTo(a.getName()));
Aquí a
y b
se deducen como tipo de persona por expresión lambda.
Ahora que es un ejemplo un poco confuso, porque String implementa Comparable. Y eso -1 no es lo más directo. – Bozho
El mejor argumento contra -1 * x es que '-1 * Integer.MIN_VALUE == Integer.MIN_VALUE'. Que no es lo que quieres Cambié los argumentos que es más fácil de todos modos. –
Y supongo que es un ReverseComparator, en lugar de Reserve ... –