Препоръчано, 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 и реализира интерфейса на картата.LinkedHashMap разширява Hashmap.
версияHashMap бе въведена в JDK 2.0.LinkedHashMap бе въведена в JDK 4.0.
ОтгореСравнително по-малко режийни.Сравнително повече разходи, защото трябва да поддържа реда на записите в картата.

Дефиниция на HashMap

HashMap е клас, който се използва за създаване на карта. Той изпълнява Map Interface. Той също така разширява клас AbstractMap, така че да може да използва хеш таблица за съхраняване на записите в картата. Въвеждането на картата е двойка, където всеки ключ е свързан със стойността. Ключът в записа се използва за извличане на стойността, следователно ключът трябва да е уникален. Ето защо дублиращите се ключове не са позволени в HashMap. Но ключът във всеки запис на картата може да има различен тип, т.е. ключовете в картата, създадени от HashMap, могат да бъдат разнородни. Структурата на данните, използвана от HashMap за съхраняване на карта, е хеш таблица.

Редът за вмъкване на записите в HashMap не се запазва. Вмъкването на записи в картата, създадена с помощта на HashMap, се основава на хеш кода, изчислен от ключовете в записите. Ако по погрешка сте въвели дублиращ се ключ в HashMap, той ще замени предишната стойност на този ключ с новата предложена стойност и ще върне старата стойност. Ако не се използва дублиращ се ключ и не е извършена подмяна, ключът винаги връща Null. Нека видим как да добавим записите към хеш картата със следния пример.

 Hashmap hm = new Hashmap (); hm.put ("Ajay", 275); hm.put ("Виджай", 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 е свързан списък и Hashtable .
  3. Класът HashMap разширява клас AbstractMap и изпълнява интерфейса на картата . Класът LinkedHashMap обаче е дъщерен клас на класа HashMap, т.е. класът LinkedHashMap разширява класа HashMap.
  4. Класът HashMap бе въведен в версията JDK 2.0 . Класът LinkedHashMap беше представен по-късно в JDK 4.0 версията.
  5. Сравнително класът LinkedHashMap има повече натоварвания от HashMap, тъй като трябва да поддържа реда на елементите, вмъкнати в картата.

Заключение:

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

Top