Java Core trainee

Как сортировать List по убыванию по полю?

Ответ

list.sort(Comparator.comparing(User::getAge).reversed()) или с лямбдой list.sort((a, b) -> b.getAge() - a.getAge()) — но безопаснее через Comparator.comparing.

Разбор: Правильно — Comparator.comparing(User::getAge).reversed(), который инвертирует именно порядок сравнения по полю. Ловушки: Collections.reverse после сортировки нарушает стабильность для равных ключей и работает только если сначала отсортировано (а тут даёт не тот результат при дубликатах); Comparator.reverseOrder() требует, чтобы сам User был Comparable, и не знает про getAge; а naturalOrder вторым аргументом задаёт прямой порядок ключа, то есть возрастание, а не убывание.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться