Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Как можно задать порядок сортировки в TreeMap?

Вопрос проверяет умение управлять сортировкой ключей в упорядоченных коллекциях.

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

Порядок сортировки в TreeMap можно задать через Comparable или Comparator. Comparable задает естественный порядок внутри класса ключа. Comparator передается в конструктор TreeMap. При наличии Comparator он имеет приоритет.

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

TreeMap позволяет гибко управлять тем, как будут упорядочены ключи.

Способ 1: Comparable

Определение:
Comparable задает естественный порядок объектов через метод compareTo().

Особенности:

  • порядок фиксирован в классе

  • нельзя изменить без изменения кода класса

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

Способ 2: Comparator

Определение:
Comparator — внешний объект, описывающий логику сравнения.

Преимущества:

  • можно задать любой порядок

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

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

Comparator<Integer> desc = (a, b) -> b - a;
TreeMap<Integer, String> map = new TreeMap<>(desc);

Что выбрать

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

  • Comparator — когда требуется гибкость

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

Порядок сортировки в TreeMap задается либо через Comparable, либо через Comparator, причем Comparator имеет приоритет.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Java

    Java

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

#comparator

#comparable

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