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

Автор: Laura McKinney
Дата Створення: 2 Квітень 2021
Дата Оновлення: 10 Травень 2024
Anonim
Разница между HashMap и TreeMap Java собеседование
Відеоролик: Разница между HashMap и TreeMap Java собеседование

Зміст


HashMap і TreeMap - класи Map, і обидва реалізують інтерфейс Map. Карта - це об'єкт, який зберігає пари ключових значень, де кожен ключ є унікальним, але можуть бути дублікати значень. Клас HashMap використовує хеш-таблицю як структуру даних. TreeMap використовує червоно-чорне дерево як структуру даних. Основна відмінність HashMap від Treemap полягає в тому, що HashMap не зберігає порядок вставки, тоді як Деревна карта робить.

Тож почнемо нашу дискусію щодо відмінностей між HashMap та TreeMap за допомогою таблиці порівняння, показаної нижче.

  1. Порівняльна діаграма
  2. Визначення
  3. Ключові відмінності
  4. Висновок

Порівняльна діаграма

Основа для порівнянняHashMapДерево карта
Основні HashMap не підтримує порядок вставки.TreeMap підтримує порядок вставки.
DataStructureHashMap використовує Hash Table як основу структури даних.TreeMap використовує червоно-чорне дерево як основу структури даних.
Нульові ключі та значення HashMap дозволяє клавіші Null один раз, коли значення Null має значення, будь-яку кількість разів.TreeMap не дозволяє Null ключ, але дозволяє Null Values ​​будь-яку кількість разів.
Розширення та реалізаціяHashMap розширює клас AbstractMap та реалізує інтерфейс Map.TreeMap розширює клас AbstractMap та реалізує інтерфейси SortedMap та NavigableMap.
ПродуктивністьHashMap працює швидше.TreeMap порівняно з HashMap працює повільніше.


Визначення HashMap

HashMap клас класів. Він використовує хеш-таблиця, як структура даних для зберігання пари ключових значень карт. Вставлення пари ключ-значення здійснюється за допомогою хеш-код з ключі. Отже, кожен ключ на карті повинен бути унікальним, оскільки він буде використовуватися для отримання значень.

Порядок вставки в HashMap є ні збережено, що означає, що об’єкт хешмапу не повертає елементи в тому порядку, в який вони були вставлені. З іншого боку, порядок повернення елементів не визначений.

The ключ дозволено бути НУЛЬ одразу, але то значення може бути НУЛЬ в будь-який час. HashMap може містити неоднорідний об'єкти для ключів, а також значення.

Існує чотири конструктори HashMap:

HashMap () HashMap (Карта m) HashMap (int місткість), HashMap (int місткість, float fillRatio)

The спочатку конструктор створює порожній об'єкт HashMap. The другий конструктор ініціалізує HashMap за допомогою елементів Map m. The третій конструктор ініціалізує HashMap з ємністю, наданою в аргументі. The четвертий конструктор ініціалізує ємність, а також коефіцієнт заповнення об'єкта HashMap.


За замовчуванням ємність HashMap є 16, і за замовчуванням коефіцієнт заповнення HashMap є 0.75.

Визначення TreeMap

Як HashMap, Дерево карта також є класом Map. TreeMap розширюється Анотаційна карта клас та інвентар NavigabelMap і SortedMap. Об'єкти TreeMap зберігають елементи карти у структурі дерева. Структура даних, що використовується для зберігання карти, є Червоно-чорне дерево.

TreeMap зберігає пару ключових значень у відсортованому порядку, що допомагає у швидкому пошуку елементів. Об'єкт TreeMap повертає елементи в відсортовано (висхідний) замовлення.

Існує чотири конструктори TreeMap:

TreeMap () TreeMap (Порівняльник <? Super K> comp) TreeMap (Map <? Розширює K,? Розширює V> m) TreeMap (SortedMap см)

The спочатку конструктори створюють порожній об’єкт TreeMap, який би сортував у природному порядку його ключі. The другий конструктор створить порожню карту дерева, яку буде сортувати за Компаратор cmp. The третій конструктор вище створить мапу, яка буде ініціалізована за допомогою записів Карта м. The четвертий конструктор створить карту, яка буде ініціалізована за допомогою записів SortedMap см.

У Treemap немає власного нового методу, він використовує метод інтерфейсів NavigableMap та SortedMap та клас AbstractMap.

  1. Обидва класи використовуються для створення об’єктів карт, але основна відмінність HashMap від Treemap полягає в тому, що HashMap не підтримує порядок вставки, тоді як Treemap.
  2. Структура даних, яка використовується Hashmap для зберігання елементів карти, - це хеш-таблиця, а структура даних, яка використовується TreeMap для зберігання елементів карти, - це червоно-чорне дерево.
  3. І класи Hashmap, і Treemap розширюють клас AbstractMap, але клас HashMap реалізує інтерфейс Map, а TreeMap реалізує інтерфейси NavigableMap та SortedMap.
  4. Ці значення можуть бути Null будь-яку кількість разів в обох, але ключ може бути Null лише один раз у HashMap, а ключ ніколи не може бути в Treemap.
  5. Продуктивність HashMap швидша, вона не витрачає час на сортування елементів карти, як це робить TreeMap. Отже, TreeMap працює повільніше, ніж HashMap.

Висновок:

TreeMap слід використовувати лише тоді, коли вам потрібна пара ключових значень у відсортованій формі. Оскільки сортування включає вартість продуктивності. Несинхронізований HashMap працює швидше.