Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Comparator.reversed()

Возвращает компаратор с обратным порядком. Для естественного порядка есть Comparator.reverseOrder().

Доступно с: Java 8

Синтаксис

default Comparator<T> reversed()

Возвращаемое значение

Comparator<T>Новый компаратор, сортирующий в обратную сторону.

Примеры

По убыванию цены и строки по убыванию:

record Item(String name, int price) {}
 
void main() {
    var items = new ArrayList<>(List.of(new Item("pen", 2), new Item("book", 15), new Item("bag", 40)));
    items.sort(Comparator.comparingInt(Item::price).reversed());
    IO.println(items.getFirst().name());
 
    var words = new ArrayList<>(List.of("b", "c", "a"));
    words.sort(Comparator.reverseOrder());
    IO.println(words);
}

Результат:

bag
[c, b, a]

Примечания

reversed() обращает всю цепочку, к которой применён: comparing(A).thenComparing(B).reversed() обратит оба критерия. С лямбдой без явного типа comparing(p -> p.price()).reversed() не скомпилируется — компилятор не выведет тип p; используйте ссылку на метод или укажите тип: (Item p) -> p.price().

См. также

  • Comparator.comparing() — Создаёт компаратор, который сравнивает объекты по одному полю.
  • Comparator.thenComparing() — Добавляет второй критерий сортировки — для объектов, равных по первому.
  • Arrays.sort() — Сортирует массив на месте — по возрастанию или по заданному компаратору.

Вопросы и ответы по теме

В учебнике

  • Сортировка и компараторы — Сортировка коллекций в Java: естественный порядок, обратный порядок, интерфейс Comparable, Comparator.comparing и сортировка по нескольким полям.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.