Java-stream-sort-2-Variablen in aufsteigender/desending
Ich möchte sozusagen seq1 aufsteigend und seq2 absteigend, so dass ich dies tun:
list = list.stream().sorted(comparing(AClass::getSeq1).thenComparing(
AClass::getSeq2).reversed()).collect(toList());
Aber das Ergebnis kommen, da beide seq1 und seq2 in absteigender Reihenfolge sortiert werden.
Kann ich tun, um seq1 aufsteigend und seq2 absteigend:
sorted(comparing(AClass::getSeq1)
.reversed().thenComparing(AClass::getSeq2).reversed()
Was ist eigentlich der korrekte Weg, dies zu tun?
- In der Zukunft, geben Sie bitte Ihre
import static
Aussagen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In deinem ersten Beispiel
reversed
angewendet wird, um die ganze Komparator vergleicht seq1 dann seq2 in aufsteigender Reihenfolge.Was Sie brauchen, ist eine Umkehrung der zweite Vergleich nur, was getan werden kann, zum Beispiel mit:
.thenComparing(AClass::getSeq2, reverseOrder())
ist ebenfalls möglich und wird der Sieger sein in Bezug auf source-code-Länge (was eine enge übereinstimmung)...import static
Aussagen. Sollten Sie wirklich schon in der Frage...