2015-10-07 8 views
10

Ich habe eine ArrayList und will es in absteigender Reihenfolge sortieren. Ich benutze dafür java.util.stream.Stream.sorted(Comparator) Methode. Hier ist eine Beschreibung nach Java API:Reverse einen Vergleicher in Java 8

Gibt einen Strom, der aus den Elementen dieses Stroms, sortiert nach dem vorgesehenen Comparator.

diese Methoden geben mir eine Sortierung mit aufsteigender Reihenfolge zurück. Welchen Parameter sollte ich ändern, nur um die absteigende Reihenfolge zu haben?

+2

Ändern Sie den Vergleicher Verhalten, natürlich. – duffymo

Antwort

29

Sie können Comparator.reverseOrder() verwenden, um einen Komparator zu haben, der die Umkehrung der natürlichen Reihenfolge auferlegt. Wenn Sie die Reihenfolge eines vorhandenen Vergleichers ändern 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