Разлика между HashMap и LinkedHashMap в Java

Автор: Laura McKinney
Дата На Създаване: 2 Април 2021
Дата На Актуализиране: 9 Може 2024
Anonim
Разлика между HashMap и LinkedHashMap в Java - Технология
Разлика между HashMap и LinkedHashMap в Java - Технология

Съдържание


HashMap и LinkedHashMap са класовете, доста сходни един с друг и се използват за създаване на карта. Класът HashMap разширява класа AbstractMap, за да използва хеш таблица за съхранение на елементите в картата. Класът LinkedHashMap поддържа записите в картата въз основа на реда им на вмъкване. Характеристиката, която отличава HashMap и LinkedHashMap един от друг, е това HashMap не поддържа реда на запаметените записи в карта. От друга страна, LinkedHashMap използва хибридна структура на данни, за да поддържа реда на записите, в които са вмъкнати. В сравнителната диаграма по-долу разгледах някои други разлики между HashMap и LinkedHashMap просто вижте.

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. заключение

Сравнителна диаграма

Основа за сравнениеHashMapLinkedHashMap
ОсновенРедът за вмъкване в 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 за съхраняване на карта, е хеш-таблица.

Редът за вмъкване на записите в 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 също е класна употреба за създаване на карта. LinkedHashMap разширява HashMap клас и беше представен по-късно на HashMap във версия JDK 4.0. Да бъдеш детски клас на клас HashMap LinkedHashMap е абсолютно същото като клас HashMap, включително конструкторите и методите. Но LinkedHashMap се различава по смисъл, че поддържа реда на вмъкване на записите в картата. Структурата на данните, която се използва от LinkedHashMap за съхраняване на картата, е свързан списък и хеш маса.

В допълнение към методите, наследени от HashMap, LinkedHashMap въвежда един нов метод, който е RemoveEldestEntry (), Този метод се използва за премахване на най-стария запис в картата. Капацитетът по подразбиране на LinkedHashMap е 16, а коефициентът на запълване по подразбиране е 0,75, което също е подобно на класа HashMap.

  1. Най-важната разлика е, че редът на вмъкване на HashMap е не са запазени като има предвид, че редът на вмъкване на LinkedHashMap е запазен.
  2. Структурата на данните, използвана от HashMap за съхраняване на елементите на картата, е Hashtable, От друга страна, използваната от LinkedHashMap структура на данните е Свързан списък и Hashtable.
  3. Класът HashMap се разширява AbstractMap клас и реализира карта интерфейс. Въпреки това класът LinkedHashMap е детски клас на HashMap клас, т.е. клас LinkedHashMap разширява класа HashMap.
  4. Класът HashMap беше въведен в JDK 2.0 версия. Класът LinkedHashMap беше представен по-късно през JDK 4.0 версия.
  5. Сравнително класът LinkedHashMap има повече режийни разходи от HashMap, тъй като трябва да поддържа реда на елементите, вмъкнати в картата.

Заключение:

LinkedHashMap трябва да се използва само когато сме загрижени за последователността на елементите, вмъкнати в картата.