Сортирует ли TreeMap в Java элементы по ключу?

«Сортирует ли TreeMap в Java элементы по ключу?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да. TreeMap<K, V> реализует интерфейс SortedMap и хранит пары ключ-значение в отсортированном порядке по ключам.

Правила сортировки:

  1. Естественный порядок (natural ordering): Ключи должны реализовывать интерфейс Comparable (как Integer, String).
    TreeMap<Integer, String> map = new TreeMap<>();
    map.put(3, "Three");
    map.put(1, "One");
    map.put(2, "Two");
    // {1=One, 2=Two, 3=Three} — автоматическая сортировка по возрастанию
    System.out.println(map);
  2. Кастомный порядок: Через Comparator в конструкторе.
    // Сортировка строк в обратном порядке
    TreeMap<String, Integer> reverseMap = new TreeMap<>(Comparator.reverseOrder());
    reverseMap.put("a", 1);
    reverseMap.put("c", 3);
    reverseMap.put("b", 2);
    // {c=3, b=2, a=1}
    System.out.println(reverseMap);

Важно:

  • Сложность основных операций (put, get, remove) — O(log n), так как TreeMap реализован на основе красно-черного дерева.
  • Сортировка поддерживается динамически при каждом добавлении или удалении элемента.