Что такое интерфейс SortedMap в Java?

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

Ответ

SortedMap<K, V> — это интерфейс в Java (пакет java.util), расширяющий Map<K, V>, который гарантирует, что его элементы (пары ключ-значение) хранятся в отсортированном порядке по ключам.

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

  • Порядок сортировки определяется либо естественным порядком ключей (если они реализуют Comparable<K>), либо внешним Comparator<K>, переданным при создании коллекции.
  • Основная реализация — TreeMap, основанная на красно-черном дереве, что обеспечивает время выполнения O(log n) для операций put(), get(), remove().

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

SortedMap<String, Integer> sortedMap = new TreeMap<>();
sortedMap.put("Zebra", 10);
sortedMap.put("Apple", 5);
sortedMap.put("Banana", 7);

System.out.println(sortedMap);
// Вывод: {Apple=5, Banana=7, Zebra=10} (ключи отсортированы)

Важные методы, добавленные SortedMap:

  • K firstKey() – возвращает первый (наименьший) ключ.
  • K lastKey() – возвращает последний (наибольший) ключ.
  • SortedMap<K,V> subMap(K fromKey, K toKey) – возвращает представление части карты с ключами от fromKey (включительно) до toKey (исключительно).
  • SortedMap<K,V> headMap(K toKey) – возвращает ключи, строго меньшие toKey.
  • SortedMap<K,V> tailMap(K fromKey) – возвращает ключи, большие или равные fromKey.

Важно: TreeMap (стандартная реализация) не допускает null-ключи, если только не используется Comparator, который явно обрабатывает null.