Что такое TreeMap в Java?

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

Ответ

TreeMap — это реализация интерфейса NavigableMap в Java, основанная на красно-черном дереве. Она хранит пары ключ-значение в отсортированном порядке по ключам.

Ключевые характеристики:

  • Сортировка: Элементы автоматически сортируются по ключам (естественный порядок или с помощью Comparator).
  • Производительность: Гарантирует логарифмическое время O(log n) для основных операций (put(), get(), remove()).
  • Null-ключи: Не допускает null в качестве ключа (если только Comparator явно не поддерживает null).
  • Потокобезопасность: Не синхронизирована. Для многопоточного доступа используйте Collections.synchronizedSortedMap().
  • Навигация: Предоставляет методы для работы с диапазонами (subMap(), headMap(), tailMap()) и навигации (higherKey(), lowerEntry()).

Пример использования:

TreeMap<Integer, String> map = new TreeMap<>();
map.put(3, "Three");
map.put(1, "One");
map.put(2, "Two");

System.out.println(map); // {1=One, 2=Two, 3=Three} (автоматическая сортировка)
System.out.println(map.firstKey()); // 1
System.out.println(map.higherKey(1)); // 2
System.out.println(map.descendingMap()); // {3=Three, 2=Two, 1=One}

Когда использовать: Когда необходим порядок итерации по ключам или частые операции с диапазонами. Для простых ассоциативных массивов без требования сортировки предпочтительнее HashMap.