2015-10-07 15 views
10

Mam ArrayList i chcę posortować go w porządku malejącym. Używam do tego metody java.util.stream.Stream.sorted(Comparator). Oto opis zgodny z interfejsem API języka Java:Odwróć komparator w Javie 8

Powoduje powrót do strumienia składającego się z elementów tego strumienia, posortowanego według dostarczonego Comparator.

ta metoda zwraca mi rodzaj z rosnącym porządkiem. Który parametr powinienem zmienić, aby mieć kolejność malejącą?

+2

zmienić zachowanie komparatora, oczywiście. – duffymo

Odpowiedz

29

Możesz użyć Comparator.reverseOrder(), aby mieć komparator, który narzuca odwrotność naturalnego porządku.

Jeśli chcesz odwrócić kolejność istniejącego komparatora, możesz użyć Comparator.reversed().

Przykładowy kod:

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