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 и сортировка по нескольким полям.