J'ai une liste de tableaux et je veux le trier par ordre décroissant. J'utilise pour cela la méthode Java.util.stream.Stream.sorted(Comparator)
. Voici une description en fonction de l'API Java:
Renvoie un flux constitué des éléments de ce flux, trié selon la variable
Comparator
fournie.
cette méthode me renvoie une sorte d'ordre croissant. Quel paramètre devrais-je changer, juste pour avoir l'ordre décroissant?
Vous pouvez utiliser Comparator.reverseOrder()
pour avoir un comparateur qui impose l’inverse de l’ordre naturel.
Si vous souhaitez inverser l'ordre d'un comparateur existant, vous pouvez utiliser Comparator.reversed()
.
Exemple de code:
Stream.of(1, 4, 2, 5)
.sorted(Comparator.reverseOrder());
// stream is now [5, 4, 2, 1]
Stream.of("foo", "test", "a")
.sorted(Comparator.comparingInt(String::length).reversed());
// stream is now [test, foo, a], sorted by descending length
L'interface Java Comparator
a une méthode reversed
: https://docs.Oracle.com/javase/8/docs/api/Java/util/Comparator.html#reversed--
Vous pouvez également utiliser Comparator.comparing (Function, Comparator)
Il est pratique d’enchaîner les comparateurs si nécessaire, par exemple:
Comparator<SomeEntity> ENTITY_COMPARATOR = comparing(SomeEntity::getProperty1, reverseOrder())
.thenComparingInt(SomeEntity::getProperty2)
.thenComparing(SomeEntity::getProperty3, reverseOrder());