Я начал изучать Java. Когда я буду использовать HashMap над TreeMap?
В чем разница между HashMap и TreeMap?
Ответ 1
 TreeMap является примером SortedMap, что означает, что порядок ключей можно сортировать, а при повторении по клавишам вы можете ожидать, что они будут в порядке.
 HashMap, с другой стороны, не дает такой гарантии. Поэтому при повторении по клавишам HashMap вы не можете быть уверены, в каком порядке они будут.
 HashMap будет более эффективным в целом, поэтому используйте его всякий раз, когда вам не нужен порядок ключей.
Ответ 2
 HashMap реализуется таблицей Hash, а TreeMap реализуется Red-Black tree. Основное различие между HashMap и TreeMap фактически отражает основное различие между a Hash и a Binary Tree, то есть при итерации гарантией TreeMap может быть порядок клавиш, который определяется методом elementElementTo() или компаратор установлен в конструкторе TreeMap.
Посмотрите следующую диаграмму.
 
Ответ 3
Подводя итог:
- HashMap: структура массива Lookup-массива, основанная на hashCode(), реализациях equals(), O (1) сложность выполнения для вставки и поиска, unsorted
- TreeMap: структура дерева, основанная на реализации compareTo(), O (log (N)) сложность выполнения для вставки и поиска, отсортированная
Взято из: HashMap против TreeMap
Ответ 4
Используйте HashMap большую часть времени, но используйте TreeMap, когда вам нужен ключ для сортировки (когда вам нужно итерировать ключи).
Ответ 5
Я расскажу о реализации HashMap и TreeMap в Java:
-  HashMap - реализует базовый интерфейс карты - реализованный массивом ведер, каждый ведро представляет собой LinkedList записей
- время выполнения основных операций: put(), среднее значение O (1), наихудший случай O (n), происходит при изменении размера таблицы; get(), remove(), средний O (1)
-  не синхронизирован, чтобы синхронизировать его: Map m = Collections.synchronizedMap(new HashMap(...));
- Порядок итераций карты непредсказуем.
 
-  TreeMap - реализовать навигационный интерфейс карты - реализовано красно-черным деревом
- время работы основных операций: put(), get(), remove(), наихудший случай O (lgn)
-  не синхронизирован, чтобы синхронизировать его: SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));
- предоставить упорядоченную итерацию. upperKey(), lowerKey() может использоваться для получения преемника и предшественника данного ключа.
 
Суммируя, наибольшая разница между HashMap и TreeMap заключается в том, что TreeMap реализует NavigableMap<K,V>, которые обеспечивают функцию упорядоченной итерации. Кроме того, HashMap и TreeMap являются членами среды Java Collection. Вы можете исследовать исходный код Java, чтобы узнать больше об их реализации.
Ответ 6
Вы почти всегда используете HashMap, вы должны использовать только TreeMap, если вам нужны ваши ключи в определенном порядке.
Ответ 7
 HashMap используется для быстрого поиска, тогда как TreeMap используется для сортировки итераций по карте.
Ответ 8
Наряду с сортированным хранилищем ключей разница в другом с TreeMap, разработчик может предоставить (String.CASE_INSENSITIVE_ORDER) со строковыми ключами, поэтому компаратор игнорирует случай ключа при выполнении сравнения ключей на доступ к карте. Это невозможно сделать с помощью HashMap - это всегда чувствительные к регистру сравнения в HashMap.
