В чем разница между HashMap и TreeMap? [дубликат]



этот вопрос уже есть ответ здесь:



Я начал изучать Java. Когда я использую хеш-за дерева?

346   8  

8 ответов:

TreeMap пример SortedMap, что означает, что порядок ключей может быть отсортирован, и при итерации по ключам вы можете ожидать, что они будут в порядке.

HashMap С другой стороны, не дает таких гарантий. Поэтому при итерации по ключам a HashMap, вы не можете быть уверены, каком порядке они будут.

HashMap будет более эффективным в целом, так что используйте его всякий раз, когда вам все равно о порядке следования ключей.

HashMap реализуется хэш-таблицы, в то время как TreeMap осуществляется Red-Black tree. Главное отличие HashMap и TreeMap на самом деле отражают основное различие между Hash и Binary Tree, то есть при итерации TreeMap guarantee может гарантировать ключевой порядок, который определяется либо методом compareTo() элемента, либо компаратором, установленным в конструкторе TreeMap.

посмотри следующей схеме.

enter image description here

подведем итоги:

  • HashMap: Lookup-структура массива, основанная на реализациях hashCode(), equals (), O(1) сложность выполнения для вставки и поиска, несортированный
  • TreeMap: древовидная структура, основанная на реализации compareTo (), o(log(N)) сложность выполнения для вставки и поиска, сортировка

взято из: HashMap против TreeMap

использовать HashMap в большинстве случаев, но использовать TreeMap когда вам нужно отсортировать ключ (когда вам нужно перебирать ключи).

Я буду говорить о HashMap и TreeMap реализация на Java:

  • HashMap -- реализовать базовый интерфейс карты

    1. реализовано массивом ведер, каждое ведро является LinkedList записей
    2. время выполнения основных операций: put (), average O (1), худший случай O(n), происходит при изменении размера таблицы; get (), remove (), average O(1)
    3. не синхронизировать, синхронизировать это: Map m = Collections.synchronizedMap(new HashMap(...));
    4. порядок итераций карты непредсказуем.
  • TreeMap -- реализовать навигационный интерфейс карты

    1. реализовано красно-черным деревом
    2. время выполнения основных операций: put (), get (), remove (), в худшем случае O(lgn)
    3. не синхронизировать, синхронизировать это: SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));
    4. обеспечить упорядоченную итерацию. higherKey (), lowerKey() можно использовать для получения преемника и предшественник данного ключа.

подводя итог, самая большая разница между HashMap и TreeMap заключается в том, что TreeMap реализует NavigableMap<K,V>, которые обеспечивают функцию упорядоченной итерации. Кроме того, как HashMap, так и TreeMap являются членами Java Collection framework. Вы можете исследовать исходный код Java чтобы узнать больше об их реализации.

вы почти всегда использовать HashMap, вы должны использовать TreeMap Если вам нужно, чтобы ваши ключи были в определенном порядке.

HashMap используется для быстрого поиска, в то время как TreeMap используется для сортировки повторов на карте.

вместе с отсортированным ключом хранить друг друга разница с TreeMap, разработчик может дать (строка.CASE_INSENSITIVE_ORDER) со строковыми ключами, поэтому компаратор игнорирует регистр ключа при выполнении сравнения ключей при доступе к карте. Это не возможно, чтобы дать такую опцию с HashMap-это всегда чувствительные к регистру сравнения в HashMap.

Comments

    Ничего не найдено.