Ich habe eine ArrayList und möchte sie in absteigender Reihenfolge sortieren. Ich benutze dafür Java.util.stream.Stream.sorted(Comparator)
Methode. Hier ist eine Beschreibung gemäß Java API:
Gibt einen Stream zurück, der aus den Elementen dieses Streams besteht, sortiert nach der angegebenen
Comparator
.
diese Methoden liefern eine Sortierung mit aufsteigender Reihenfolge. Welchen Parameter sollte ich ändern, nur um die absteigende Reihenfolge zu haben?
Sie können Comparator.reverseOrder()
verwenden, um einen Komparator zu haben, der die umgekehrte Reihenfolge der natürlichen Ordnung einstellt.
Wenn Sie die Reihenfolge eines vorhandenen Komparators umkehren möchten, können Sie Comparator.reversed()
verwenden.
Beispielcode:
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
Java 8 Comparator
-Schnittstelle verfügt über eine reversed
-Methode: https://docs.Oracle.com/javase/8/docs/api/Java/util/Comparator.html#reversed--
Sie können auch Comparator.comparing (Function, Comparator) verwenden
Es ist zweckmäßig, Komparatoren bei Bedarf zu verketten, z.
Comparator<SomeEntity> ENTITY_COMPARATOR = comparing(SomeEntity::getProperty1, reverseOrder())
.thenComparingInt(SomeEntity::getProperty2)
.thenComparing(SomeEntity::getProperty3, reverseOrder());