Діаграма порівняння
Основа для порівняння | HashMap | LinkedHashMap |
---|---|---|
Основний | Порядок вставки в 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
- Найважливіша відмінність полягає в тому, що порядок вставки HashMap не зберігається, тоді як порядок вставки LinkedHashMap зберігається .
- Структура даних, яка використовується HashMap для зберігання елементів карти, є Hashtable . З іншого боку, структура даних, що використовується LinkedHashMap, є списком Linked і Hashtable .
- Клас HashMap розширює клас AbstractMap і реалізує інтерфейс Map . Однак клас LinkedHashMap є дочірнім класом класу HashMap, тобто клас LinkedHashMap розширює клас HashMap.
- Клас HashMap був представлений у версії JDK 2.0 . Клас LinkedHashMap був представлений пізніше у версії JDK 4.0 .
- Порівняно клас LinkedHashMap має більше накладних витрат, ніж HashMap, оскільки він повинен підтримувати порядок елементів, вставлених у карту.
Висновок:
LinkedHashMap може використовуватися тільки там, де нас турбує послідовність елементів, вставлених на карту.