Ответ
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.