Різниця між HashMap і LinkedHashMap на Java
Зміст
HashMap та LinkedHashMap - це класи, досить схожі між собою та використовуються для створення карти. Клас HashMap розширює клас AbstractMap, щоб використовувати хеш-таблицю для зберігання елементів на карті. Клас LinkedHashMap підтримує записи на карті на основі порядку їх вставки. Особливістю, яка відрізняє HashMap і LinkedHashMap один від одного, є те, що Хешмап не підтримує порядок збережених записів на карті. З іншого боку, LinkedHashMap використовує гібридну структуру даних для підтримки порядку записів, в які вони були вставлені. У таблиці порівняння нижче я дослідив деякі інші відмінності між HashMap та LinkedHashMap, просто подивіться.
- Порівняльна діаграма
- Визначення
- Ключові відмінності
- Висновок
Порівняльна діаграма
Основа для порівняння | HashMap | LinkedHashMap |
---|---|---|
Основні | Порядок вставки в HashMap не зберігається. | Порядок вставки зберігається в LinkedHashMap. |
Структура даних | HashMap використовує HashTable для зберігання карт. | LinkedHashMap використовує HashTable разом із пов'язаним списком для зберігання карти. |
Розширення / реалізація | HashMap розширює AbstractMap та реалізує інтерфейс Map. | LinkedHashMap розширює Hashmap. |
Версія | HashMap був представлений в JDK 2.0. | LinkedHashMap був представлений в JDK 4.0. |
Накладні | Порівняно менше накладних витрат. | Порівняно більше накладних витрат, оскільки він повинен підтримувати порядок записів на карті. |
Визначення 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 розширює HashMap клас і був представлений пізніше HashMap у JDK версії 4.0. Бути дочірнім класом HashMap класу LinkedHashMap точно такий же, як клас HashMap, включаючи конструктори та методи. Але LinkedHashMap відрізняється тим, що він підтримує порядок вставки записів у карту. Структура даних, яка використовується LinkedHashMap для зберігання карти, є пов'язаний список і хеш-таблиця. Крім методів, успадкованих HashMap, LinkedHashMap вводить ще один новий метод, який є deleteEldestEntry (). Цей метод використовується для видалення найдавнішого запису на карті. Ємність LinkedHashMap за замовчуванням становить 16, а коефіцієнт заповнення за замовчуванням - 0,75, що також схоже на клас HashMap.
Визначення LinkedHashMap
- Найголовніша відмінність полягає в тому, що порядок вставки HashMap є не збереглося тоді як порядок вставки LinkedHashMap є збереглися.
- Структура даних, яка використовується HashMap для зберігання елементів карти, є Хештейн. З іншого боку, структура даних, що використовується LinkedHashMap, є Пов'язаний список і Хештейн.
- Розширюється клас HashMap Анотаційна карта клас та реалізує Карта інтерфейс. Однак клас LinkedHashMap є дочірнім класом HashMap клас, тобто клас LinkedHashMap розширює клас HashMap.
- Клас HashMap був представлений в JDK 2.0 версія. Клас LinkedHashMap був представлений пізніше в JDK 4.0 версія.
- Порівняно LinkedHashMap клас має більше накладних витрат, ніж HashMap, оскільки він повинен підтримувати порядок елементів, вставлених у карту.
Висновок:
LinkedHashMap слід використовувати лише тоді, коли нас турбує послідовність елементів, вставлених у карту.