example java sorting java-8 comparator java-stream

example - Invierta un comparador en Java 8



comparator java list (3)

Tengo una ArrayList y quiero ordenarla en orden descendente. Lo uso para el método java.util.stream.Stream.sorted(Comparator) . Aquí hay una descripción según la API de Java:

Devuelve una secuencia que consta de los elementos de esta secuencia, ordenados según el Comparator proporcionado.

Estos métodos me devuelven una especie de orden ascendente. ¿Qué parámetro debo cambiar, solo para tener el orden descendente?


Puede usar Comparator.reverseOrder() para tener un comparador que dé el reverso del orden natural.

Si desea invertir el orden de un comparador existente, puede usar Comparator.reversed() .

Código de muestra:

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


También puede usar Comparator.comparing (Función, Comparador)
Es conveniente encadenar comparadores cuando sea necesario, por ejemplo:

Comparator<SomeEntity> ENTITY_COMPARATOR = comparing(SomeEntity::getProperty1, reverseOrder()) .thenComparingInt(SomeEntity::getProperty2) .thenComparing(SomeEntity::getProperty3, reverseOrder());