logo

Різниця між HashMap і TreeMap

Java HashMap і TreeMap обидва є класами структури Java Collections. Реалізація Java Map зазвичай діє як сегментована хеш-таблиця. Коли відра стають занадто великими, вони перетворюються на вузли TreeNodes , кожен структурований подібно до тих, що в java.util.TreeMap .

HashMap

HashMap реалізує Карта, Cloneable і Серіалізований інтерфейс. Він розширюється Абстрактна карта клас. Це належить java.util пакет.

  • HashMap містить значення на основі ключа.
  • Він може мати один нульовий ключ і кілька нульових значень.
  • HashMap не підтримує порядок під час ітерації.
  • Він містить унікальні елементи.
  • Працює за принципом хешування.

TreeMap

Клас TreeMap розширюється Абстрактна карта клас і знаряддя NavigableMap , Можливість клонування , і Серіалізований інтерфейс. TreeMap є прикладом a SortedMap . Це реалізовано червоно-чорним деревом, що означає, що порядок ключів відсортований.

  • TreeMap також містить значення на основі ключа.
  • TreeMap сортується за ключами.
  • Він містить унікальні елементи.
  • Він не може мати нульовий ключ, але мати кілька нульових значень.
  • Ключі розташовані в порядку зростання.
  • Він зберігає об’єкт у структурі дерева.

Подібності між HashMap і TreeMap

    HashMapі TreeMap класи реаліз Можливість клонування і Серіалізований інтерфейс.
  • Обидва класи розширюються Абстрактна карта клас.
  • Карта — це об’єкт, який зберігає ключ-значення пари. У парі ключ-значення кожен ключ унікальний, але їхні значення можуть бути унікальними дублікат .
  • Обидва класи представляють відображення з ключ до значення .
  • Обидві карти ні синхронізовано .
  • Використання карти поставити() метод додавання елемента на карту.
  • Ітератор кидає a ConcurrentModificationException якщо карту будь-яким чином змінено.

Ключова відмінність між HashMap і TreeMap:

HashMap не зберігає порядок ітерацій, поки TreeMap зберегти порядок за допомогою порівняти() метод або a компаратор встановити в конструкторі TreeMap.

У наведеній нижче таблиці описано відмінності між HashMap і TreeMap.

Основа HashMap TreeMap
Визначення Java HashMap це реалізація інтерфейсу карти на основі хеш-таблиці. Java TreeMap це реалізація інтерфейсу карти на основі деревовидної структури.
Реалізації інтерфейсу HashMap реалізує Карта, Cloneable , і Серіалізований інтерфейс. TreeMap реалізує NavigableMap, Cloneable , і Серіалізований інтерфейс.
Нульові ключі/значення HashMap дозволяє a неодружений нульовий ключ і багаторазовий нульові значення. TreeMap не дозволяє нуль ключі але можна мати багаторазовий нульові значення.
Однорідний/ Неоднорідний HashMap допускає різнорідні елементи, оскільки не виконує сортування за ключами. TreeMap дозволяє використовувати однорідні значення як ключ завдяки сортуванню.
Продуктивність HashMap є швидше ніж TreeMap, тому що він забезпечує постійну продуктивність O(1) для основних операцій, таких як get() і put(). TreeMap є повільний у порівнянні з HashMap, оскільки він забезпечує продуктивність O(log(n)) для більшості операцій, таких як add(), remove() і contains().
Структура даних Клас HashMap використовує хеш-таблиця . TreeMap внутрішньо використовує a Червоно-Чорний дерево, яке є самобалансуючим бінарним деревом пошуку.
Метод порівняння Це використовує дорівнює() метод Об'єкт клас для порівняння ключів. Метод equals() класу Map замінює його. Він використовує порівняти() метод порівняння ключів.
Функціональність Клас HashMap містить лише основні функції, такі як get(), put(), KeySet() і т.д. Клас TreeMap багатий на функціональність, оскільки містить такі функції, як: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() .
Порядок елементів HashMap не підтримує жодного порядку. Елементи відсортовані природний порядок (за зростанням).
Використання HashMap слід використовувати, коли нам не потрібна пара ключ-значення в порядку сортування. TreeMap слід використовувати, коли нам потрібна пара ключ-значення у відсортованому (за зростанням) порядку.

Приклад HashMap проти TreeMap

У наступному прикладі ми можемо помітити, що елементи HashMap розташовані у випадковому порядку, тоді як елементи TreeMap розташовані в порядку зростання.

цикл while java
 import java.util.Map; import java.util.HashMap; import java.util.TreeMap; public class HashMapVsTreeMapExample { public static void main(String args[]) { /*------------HashMap implementation----------------*/ Map hm=new HashMap(); //adding elements to the HashMap hm.put(9, 'Red'); hm.put(12, 'Black'); hm.put(6, 'Green'); hm.put(19, 'White'); System.out.println('HashMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: hm.entrySet()) { //getting keys and values using method System.out.println(entry.getKey() + ' = ' +entry.getValue()); } /*------------TreeMap implementation----------------*/ Map tm=new TreeMap(); //adding elements to the TreeMap tm.put(9, 'Red'); tm.put(12, 'Black'); tm.put(6, 'Green'); tm.put(19, 'White'); System.out.println('TreeMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: tm.entrySet()) { //getting keys and values using method //prints list in sorted order System.out.println(entry.getKey() + ' = ' +entry.getValue()); } } } 

Вихід:

Різниця між HashMap і TreeMap