Vous pouvez faire le tri descendant d'une classe définie par l'utilisateur ainsi redéfinissant la méthode compare(),
Collections.sort(unsortedList,new Comparator<Person>() {
@Override
public int compare(Person a, Person b) {
return b.getName().compareTo(a.getName());
}
});
Ou en utilisant Collection.reverse()
pour trier descendant en tant qu'utilisateur Prince mentionné dans his comment.
Et vous pouvez faire le tri croissant comme celui-ci,
Collections.sort(unsortedList,new Comparator<Person>() {
@Override
public int compare(Person a, Person b) {
return a.getName().compareTo(b.getName());
}
});
Remplacez le code ci-dessus avec une expression Lambda (Java 8 et suivantes) nous obtenons concis:
Collections.sort(personList, (Person a, Person b) -> b.getName().compareTo(a.getName()));
A partir de Java 8, liste a procédé sort() qui prend comme paramètre Comparator (plus concise):
personList.sort((a,b)->b.getName().compareTo(a.getName()));
Ici a
et b
sont induits en tant que type de personne par expression lambda.
Voici un exemple un peu déroutant, car String implémente Comparable. Et cela - il n'y a pas la chose la plus directe. – Bozho
Le meilleur argument contre -1 * x est que -1 -1 Integer.MIN_VALUE == Integer.MIN_VALUE'. Ce n'est pas ce que tu veux. J'ai échangé les arguments qui sont plus faciles de toute façon. –
Et je suppose que c'est un ReverseComparator, au lieu de Reserve ... –