Разлика между HashMap и LinkedHashMap в Java
Съдържание
HashMap и LinkedHashMap са класовете, доста сходни един с друг и се използват за създаване на карта. Класът HashMap разширява класа AbstractMap, за да използва хеш таблица за съхранение на елементите в картата. Класът LinkedHashMap поддържа записите в картата въз основа на реда им на вмъкване. Характеристиката, която отличава HashMap и LinkedHashMap един от друг, е това HashMap не поддържа реда на запаметените записи в карта. От друга страна, LinkedHashMap използва хибридна структура на данни, за да поддържа реда на записите, в които са вмъкнати. В сравнителната диаграма по-долу разгледах някои други разлики между HashMap и LinkedHashMap просто вижте.
- Сравнителна диаграма
- дефиниция
- Ключови разлики
- заключение
Сравнителна диаграма
Основа за сравнение | HashMap | LinkedHashMap |
---|---|---|
Основен | Редът за вмъкване в HashMap не се запазва. | Редът за вмъкване се запазва в LinkedHashMap. |
Структура на данни | HashMap използва HashTable за съхраняване на карти. | LinkedHashMap използва HashTable заедно със Linked List за съхраняване на карта. |
Разширява / Реализира | HashMap разширява AbstractMap и реализира интерфейс на картата. | LinkedHashMap разширява Hashmap. |
версия | HashMap беше представен в JDK 2.0. | LinkedHashMap беше представен в JDK 4.0. |
Отгоре | Сравнително по-малко режийни. | Сравнително повече режийни, защото трябва да поддържа реда на записите на картата. |
Определение на HashMap
HashMap е клас, който се използва за създаване на карта. Той изпълнява карта Interface. Той също така разширява AbstractMap клас, така че да може да използва хеш таблица за съхраняване на записите в картата. Вписванията на картата са a Редът за вмъкване на записите в 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, Джони = 150, Аджай = 275, Йордания = 200} Както в горния код, можете да видите, че създадох обект на HashMap и добавих записите с помощта на метода put и когато редактирах обекта HashMap, записите не се редактират в реда, в който бяха вмъкнати. Следователно, не можете да претендирате, че редът на записите в HashMap ще се върне. HashMap използва всички методи на интерфейс на карта и клас AbstractMap и не въвежда никакъв нов метод; тя има свои конструктори. Капацитетът по подразбиране на хеш картата е 16 а коефициентът на запълване по подразбиране е 0.75. LinkedHashMap също е класна употреба за създаване на карта. LinkedHashMap разширява HashMap клас и беше представен по-късно на HashMap във версия JDK 4.0. Да бъдеш детски клас на клас HashMap LinkedHashMap е абсолютно същото като клас HashMap, включително конструкторите и методите. Но LinkedHashMap се различава по смисъл, че поддържа реда на вмъкване на записите в картата. Структурата на данните, която се използва от LinkedHashMap за съхраняване на картата, е свързан списък и хеш маса. В допълнение към методите, наследени от HashMap, LinkedHashMap въвежда един нов метод, който е RemoveEldestEntry (), Този метод се използва за премахване на най-стария запис в картата. Капацитетът по подразбиране на LinkedHashMap е 16, а коефициентът на запълване по подразбиране е 0,75, което също е подобно на класа HashMap.
Определение за LinkedHashMap
- Най-важната разлика е, че редът на вмъкване на HashMap е не са запазени като има предвид, че редът на вмъкване на LinkedHashMap е запазен.
- Структурата на данните, използвана от HashMap за съхраняване на елементите на картата, е Hashtable, От друга страна, използваната от LinkedHashMap структура на данните е Свързан списък и Hashtable.
- Класът HashMap се разширява AbstractMap клас и реализира карта интерфейс. Въпреки това класът LinkedHashMap е детски клас на HashMap клас, т.е. клас LinkedHashMap разширява класа HashMap.
- Класът HashMap беше въведен в JDK 2.0 версия. Класът LinkedHashMap беше представен по-късно през JDK 4.0 версия.
- Сравнително класът LinkedHashMap има повече режийни разходи от HashMap, тъй като трябва да поддържа реда на елементите, вмъкнати в картата.
Заключение:
LinkedHashMap трябва да се използва само когато сме загрижени за последователността на елементите, вмъкнати в картата.