Java 8 - Comparar varios campos en orden diferente utilizando Comparador

VinPro:

Me gusta usar Java 8 Comparatorpara ordenar una Listde un objeto sobre la base de tres propiedades. El requisito es una especie en este orden - Nombre ascendente, descendente Edad, Ciudad ascendente. Si utilizo reversed()el `Edad invierte previamente ordenadas entradas también. Esto es lo que he intentado:

Comparator.comparing((Person p) -> p.getName())
          .thenComparingInt(p -> p.getAge())
          .reversed()
          .thenComparing(p -> p.getCity());
shmosel:

utilizar Comparator.reverseOrder():

.thenComparing(Person::getAge, Comparator.reverseOrder())

Si se quiere evitar autoboxing, puede hacerlo

.thenComparing((p1, p2) -> Integer.compare(p2.getAge(), p1.getAge()))

O

.thenComparing(Comparator.comparingInt(Person::getAge).reversed())

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=164227&siteId=1
Recomendado
Clasificación