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

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

Зміст


HashMap та LinkedHashMap - це класи, досить схожі між собою та використовуються для створення карти. Клас HashMap розширює клас AbstractMap, щоб використовувати хеш-таблицю для зберігання елементів на карті. Клас LinkedHashMap підтримує записи на карті на основі порядку їх вставки. Особливістю, яка відрізняє HashMap і LinkedHashMap один від одного, є те, що Хешмап не підтримує порядок збережених записів на карті. З іншого боку, LinkedHashMap використовує гібридну структуру даних для підтримки порядку записів, в які вони були вставлені. У таблиці порівняння нижче я дослідив деякі інші відмінності між HashMap та LinkedHashMap, просто подивіться.

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

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

Основа для порівнянняHashMapLinkedHashMap
ОсновніПорядок вставки в HashMap не зберігається.Порядок вставки зберігається в LinkedHashMap.
Структура данихHashMap використовує HashTable для зберігання карт.LinkedHashMap використовує HashTable разом із пов'язаним списком для зберігання карти.
Розширення / реалізаціяHashMap розширює AbstractMap та реалізує інтерфейс Map.LinkedHashMap розширює Hashmap.
ВерсіяHashMap був представлений в JDK 2.0.LinkedHashMap був представлений в JDK 4.0.
НакладніПорівняно менше накладних витрат.Порівняно більше накладних витрат, оскільки він повинен підтримувати порядок записів на карті.


Визначення HashMap

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

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


Hashmap hm = новий Hashmap (); hm.put ("Аджай", 275); hm.put ("Vijay", 250); hm.put ("Джоні", 150); hm.put ("Йорданія", 200); System.out.ln (hm); / * вихід * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200}

Як і у наведеному вище коді, ви можете бачити, що я створив об’єкт HashMap і додав записи за допомогою методу put, і коли я редагував об'єкт HashMap, записи не редагуються в тому порядку, в який вони були вставлені. Отже, ви не можете робити вигляд, що порядок записів у HashMap повернеться. HashMap використовує всі методи інтерфейсу Map та класу AbstractMap і не впроваджує жодного нового методу; у неї є свої конструктори. Ємність хеш-карти за замовчуванням - 16 а коефіцієнт заповнення за замовчуванням - 0.75.

Визначення LinkedHashMap

LinkedHashMap - це також використання класу для створення карти. LinkedHashMap розширює HashMap клас і був представлений пізніше HashMap у JDK версії 4.0. Бути дочірнім класом HashMap класу LinkedHashMap точно такий же, як клас HashMap, включаючи конструктори та методи. Але LinkedHashMap відрізняється тим, що він підтримує порядок вставки записів у карту. Структура даних, яка використовується LinkedHashMap для зберігання карти, є пов'язаний список і хеш-таблиця.

Крім методів, успадкованих HashMap, LinkedHashMap вводить ще один новий метод, який є deleteEldestEntry (). Цей метод використовується для видалення найдавнішого запису на карті. Ємність LinkedHashMap за замовчуванням становить 16, а коефіцієнт заповнення за замовчуванням - 0,75, що також схоже на клас HashMap.

  1. Найголовніша відмінність полягає в тому, що порядок вставки HashMap є не збереглося тоді як порядок вставки LinkedHashMap є збереглися.
  2. Структура даних, яка використовується HashMap для зберігання елементів карти, є Хештейн. З іншого боку, структура даних, що використовується LinkedHashMap, є Пов'язаний список і Хештейн.
  3. Розширюється клас HashMap Анотаційна карта клас та реалізує Карта інтерфейс. Однак клас LinkedHashMap є дочірнім класом HashMap клас, тобто клас LinkedHashMap розширює клас HashMap.
  4. Клас HashMap був представлений в JDK 2.0 версія. Клас LinkedHashMap був представлений пізніше в JDK 4.0 версія.
  5. Порівняно LinkedHashMap клас має більше накладних витрат, ніж HashMap, оскільки він повинен підтримувати порядок елементів, вставлених у карту.

Висновок:

LinkedHashMap слід використовувати лише тоді, коли нас турбує послідовність елементів, вставлених у карту.