Java Core trainee

В чём разница Comparable и Comparator?

Ответ

Comparable<T> — внутри класса (метод compareTo, java.lang). Описывает «естественный» порядок. Один на класс. Comparator<T> — отдельно (метод compare, java.util). Можно сделать несколько разных Comparator'ов для одного класса под разные порядки сортировки.

Разбор: Comparable<T> объявляется в самом классе через compareTo(T) и задаёт один естественный порядок. Comparator<T> — внешний объект с методом compare(a, b), их можно иметь сколько угодно для разных порядков. Ловушки: перепутать методы (compareTo vs compare) и пакеты — Comparable лежит в java.lang, а Comparator (функциональный интерфейс) в java.util.

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

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