Java 8 - Comparar vários campos em ordem diferente usando Comparador

VinPro:

Eu gosto de usar Java 8 Comparatorpara classificar uma Listde um objeto com base em três propriedades. A exigência é a espécie nesta ordem - Nome ascendente, descendente Idade, Cidade ascendente. Se eu usar reversed()em `Idade inverte anteriormente entradas classificadas também. Aqui está o que eu tentei:

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

use Comparator.reverseOrder():

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

Se você quer evitar autoboxing, você pode fazer

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

Ou

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

Acho que você gosta

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