Ответ
Да. TreeMap<K, V> реализует интерфейс SortedMap и хранит пары ключ-значение в отсортированном порядке по ключам.
Правила сортировки:
- Естественный порядок (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); - Кастомный порядок: Через
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реализован на основе красно-черного дерева. - Сортировка поддерживается динамически при каждом добавлении или удалении элемента.