Вопрос проверяет понимание упорядоченных коллекций и внутренних структур данных в Java.
TreeMap хранит элементы в отсортированном виде. Для этого он использует самобалансирующееся бинарное дерево поиска. По умолчанию порядок определяется естественным порядком ключей. Все операции выполняются с логарифмической сложностью.
TreeMap отличается от HashMap тем, что всегда поддерживает упорядоченность ключей.
Определение:TreeMap — это реализация Map, основанная на красно-черном дереве.
Красно-черное дерево:
является самобалансирующимся
поддерживает высоту дерева близкой к логарифмической
гарантирует предсказуемую производительность
Перед объяснением важно отметить, что TreeMap сортирует ключи, а не значения.
Естественный порядок
ключи должны реализовывать Comparable
используется метод compareTo()
Сравнение при вставке
при добавлении элемента выбирается позиция в дереве
дерево балансируется автоматически
TreeMap<Integer, String> map = new TreeMap<>();
map.put(2, "B");
map.put(1, "A");
map.put(3, "C");
операции get, put, remove работают за O(log n)
ключи не могут быть null без явного компаратора
порядок всегда сохранен при итерации
TreeMap поддерживает порядок элементов за счет красно-черного дерева и логарифмических операций при работе с ключами.