Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: comparable, comparator

Что такое Comparator и Comparable?

Вопрос проверяет понимание механизмов сравнения объектов в Java.

Короткий ответ

Comparable задает естественный порядок объектов внутри самого класса. Comparator позволяет задавать порядок извне. Comparable реализуется один раз, а Comparator можно создавать в разных вариантах. Оба используются для сортировки коллекций.

Длинный ответ

Сортировка объектов в Java строится на двух базовых интерфейсах.

Comparable

Определение:
Comparable — интерфейс, который определяет естественный порядок объектов.

Характеристики:

  • метод compareTo()

  • логика сравнения встроена в класс

  • используется по умолчанию

class Product implements Comparable<Product> {
    public int compareTo(Product other) {
        return this.price - other.price;
    }
}

Comparator

Определение:
Comparator — интерфейс для внешнего описания логики сравнения.

Характеристики:

  • метод compare()

  • не требует изменения класса

  • можно создавать несколько вариантов сортировки

Comparator<Product> byName =
    (a, b) -> a.name.compareTo(b.name);

Ключевые различия

Перед сравнением важно отметить, что оба подхода решают разные задачи.

  • Comparable — один естественный порядок

  • Comparator — много возможных порядков

  • Comparator удобен для временной сортировки

Краткий вывод

Comparable задает базовый порядок объектов, а Comparator позволяет гибко управлять сортировкой без изменения класса.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Java

    Java

Ключевые слова

#comparable

#comparator

Подпишись на Java Developer в телеграм