Різниця між HashMap і TreeMap на Java
Зміст
HashMap і TreeMap - класи Map, і обидва реалізують інтерфейс Map. Карта - це об'єкт, який зберігає пари ключових значень, де кожен ключ є унікальним, але можуть бути дублікати значень. Клас HashMap використовує хеш-таблицю як структуру даних. TreeMap використовує червоно-чорне дерево як структуру даних. Основна відмінність HashMap від Treemap полягає в тому, що HashMap не зберігає порядок вставки, тоді як Деревна карта робить.
Тож почнемо нашу дискусію щодо відмінностей між HashMap та TreeMap за допомогою таблиці порівняння, показаної нижче.
- Порівняльна діаграма
- Визначення
- Ключові відмінності
- Висновок
Порівняльна діаграма
Основа для порівняння | HashMap | Дерево карта |
---|---|---|
Основні | HashMap не підтримує порядок вставки. | TreeMap підтримує порядок вставки. |
DataStructure | HashMap використовує 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. TreeMap слід використовувати лише тоді, коли вам потрібна пара ключових значень у відсортованій формі. Оскільки сортування включає вартість продуктивності. Несинхронізований HashMap працює швидше.
Висновок: