В чем разница между HashMap и TreeMap?
Я начал изучать Java. Когда я буду использовать 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.
Посмотрите следующую диаграмму.
![enter image description here]()
Ответ 3
Подводя итог:
- HashMap: структура массива Lookup-массива, основанная на hashCode(), реализациях equals(), O (1) сложность выполнения для вставки и поиска, unsorted
- TreeMap: структура дерева, основанная на реализации compareTo(), O (log (N)) сложность выполнения для вставки и поиска, отсортированная
Взято из: HashMap против TreeMap
Ответ 4
Используйте HashMap
большую часть времени, но используйте TreeMap
, когда вам нужен ключ для сортировки (когда вам нужно итерировать ключи).
Ответ 5
Я расскажу о реализации HashMap и TreeMap в Java:
Суммируя, наибольшая разница между 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.