Рекомендуємо, 2024

Вибір Редакції

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

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

Діаграма порівняння

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

Визначення HashMap

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

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

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

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

Визначення LinkedHashMap

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

На додаток до методів, успадкованих HashMap, LinkedHashMap вводить один новий метод, який removeEldestEntry () . Цей метод використовується для видалення найдавнішого запису на карті. За замовчуванням ємність LinkedHashMap дорівнює 16, а коефіцієнт заповнення за замовчуванням - 0.75, що також схоже на клас HashMap.

Ключові відмінності між HashMap і LinkedHashMap в Java

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

Висновок:

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

Top