Сортировка объекта в порядке убывания с использованием Array.sort и Lambda Expression - PullRequest
2 голосов
/ 25 июня 2019

Я хочу отсортировать коллекцию объектов в порядке убывания.

Ниже приведен код для сортировки объекта itemDetails в порядке возрастания.

Arrays.sort(itemDetails, (a, b) -> 
    String.valueOf(a.getAvailableQuantity())
          .compareTo(String.valueOf(b.getAvailableQuantity())));

Но я хотел получить результат в порядке убываниязаказ.

Ответы [ 3 ]

2 голосов
/ 25 июня 2019

Используйте Comparator.comparing (чтобы избежать необходимости повторять String.valueOf и getAvailableQuantity) и Comparator.reversed() (чтобы четко передать факт изменения порядка сортировки):

Arrays.sort(
    itemDetails,
    Comparator.comparing((ItemDetails a) -> String.valueOf(a.getAvailableQuantity())).reversed());

где ItemDetails - это имя типа элемента массива (или некоторого супертипа, который также имеет метод getAvailableQuantity).

2 голосов
/ 25 июня 2019

Переключиться на (b, a):

Arrays.sort(itemDetails, (b, a) ->
    String.valueOf(a.getAvailableQuantity())
          .compareTo(String.valueOf(b.getAvailableQuantity())));

На самом деле поменяйте имена на осмысленные, чтобы логика сортировки была понятной

1 голос
/ 25 июня 2019

Добавить минус:

Arrays.sort(itemDetails, (a, b) -> -String.valueOf(a.getAvailableQuantity()).compareTo(String.valueOf(b.getAvailableQuantity())));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...