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());
Comparator
interfaz de Java 8
Comparator
tiene un método
reversed
:
Comparator.reversed()