Różnica między HashMap i LinkedHashMap w Javie

Autor: Laura McKinney
Data Utworzenia: 2 Kwiecień 2021
Data Aktualizacji: 10 Móc 2024
Anonim
Różnica między HashMap i LinkedHashMap w Javie - Technologia
Różnica między HashMap i LinkedHashMap w Javie - Technologia

Zawartość


HashMap i LinkedHashMap są klasami, całkiem do siebie podobnymi i służą do tworzenia mapy. Klasa HashMap rozszerza klasę AbstractMap o użycie tabeli skrótów do przechowywania elementów na mapie. Klasa LinkedHashMap utrzymuje wpisy na mapie na podstawie ich kolejności wstawiania. Jest to cecha odróżniająca HashMap i LinkedHashMap od siebie Hashmap nie utrzymuje kolejności zapisanych wpisów na mapie. Z drugiej strony, LinkedHashMap używa hybrydowej struktury danych w celu utrzymania kolejności wpisów, w których zostały wstawione. W poniższej tabeli porównawczej zbadałem kilka innych różnic między HashMap i LinkedHashMap. Wystarczy spojrzeć.

  1. Wykres porównania
  2. Definicja
  3. Kluczowe różnice
  4. Wniosek

Wykres porównania

Podstawa do porównaniaHashMapLinkedHashMap
PodstawowyKolejność wstawiania w HashMap nie jest zachowana.Kolejność wstawiania jest zachowana w LinkedHashMap.
Struktura danychHashMap używa HashTable do przechowywania map.LinkedHashMap używa HashTable wraz z połączoną listą do przechowywania mapy.
Rozszerza / implementujeHashMap rozszerza AbstractMap i implementuje interfejs Map.LinkedHashMap rozszerza Hashmap.
WersjaHashMap został wprowadzony w JDK 2.0.LinkedHashMap został wprowadzony w JDK 4.0.
Nad głowąStosunkowo mniej kosztów ogólnych.Stosunkowo więcej narzutu, ponieważ musi on utrzymywać kolejność wpisów na mapie.


Definicja HashMap

HashMap to klasa używana do tworzenia mapy. Implementuje Mapa Berło. Rozszerza również AbstractMap klasa, dzięki czemu może używać tabeli skrótów do przechowywania wpisów na mapie. Wpisy na mapie to para, w której każdy klucz jest powiązany z wartością. Klucz we wpisie służy do pobierania wartości, dlatego klucz musi być unikalny. Dlatego duplikaty kluczy nie są dozwolone w HashMap. Ale klucz w każdym wpisie mapy może mieć inny typ, tzn. Klucze na mapie utworzone przez HashMap mogą być niejednorodne. Struktura danych używana przez HashMap do przechowywania mapy to tablica skrótów.

Kolejność wstawiania wpisów w HashMap nie jest zachowywana. Wstawianie wpisów do mapy utworzonej za pomocą HashMap odbywa się na podstawie kodu skrótu obliczonego na podstawie kluczy we wpisach. Jeśli przez pomyłkę wprowadziłeś duplikat klucza w HashMap, zastąpi on poprzednią wartość tego klucza proponowaną nową wartością i zwróci starą wartość. Jeśli nie zostanie użyty duplikat klucza i nie nastąpi wymiana, klucz zawsze zwraca wartość Null. Zobaczmy, jak dodać wpisy do mapy skrótów na poniższym przykładzie.


Hashmap hm = new Hashmap (); hm.put („Ajay”, 275); hm.put („Vijay”, 250); hm.put („Jonny”, 150); hm.put („Jordan”, 200); System.out.ln (hm); / * wyjście * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200}

Jak w powyższym kodzie, widać, że utworzyłem obiekt HashMap i dodałem wpisy metodą puts, a kiedy edytowałem obiekt HashMap, wpisy nie są edytowane w kolejności, w której zostały wstawione. Dlatego nie możesz udawać, że kolejność wpisów w HashMap powróci. HashMap używa wszystkich metod interfejsu Map i klasy AbstractMap i nie wprowadza żadnej nowej metody; ma własnych konstruktorów. Domyślna pojemność mapy skrótu to 16 a domyślny współczynnik wypełnienia to 0.75.

Definicja LinkedHashMap

LinkedHashMap to także wykorzystanie klasy do tworzenia mapy. LinkedHashMap rozszerza HashMap klasy i został później wprowadzony do HashMap w JDK w wersji 4.0. Będąc klasą potomną klasy HashMap LinkedHashMap jest dokładnie taki sam jak klasa HashMap, w tym konstruktory i metody. Ale LinkedHashMap różni się tym, że zachowuje kolejność wstawiania wpisów na mapie. Struktura danych używana przez LinkedHashMap do przechowywania mapy jest połączona lista i tabela mieszania.

Oprócz metod odziedziczonych przez HashMap, LinkedHashMap wprowadza jedną nową metodę removeEldestEntry (). Ta metoda służy do usunięcia najstarszego wpisu na mapie. Domyślna pojemność LinkedHashMap wynosi 16, a domyślny współczynnik wypełnienia wynosi 0,75, co jest również podobne do klasy HashMap.

  1. Najważniejszą różnicą jest to, że kolejność wstawiania HashMap to nie zachowane podczas gdy kolejność wstawiania LinkedHashMap to zachowane.
  2. Struktura danych używana przez HashMap do przechowywania elementów mapy jest Hashtable. Z drugiej strony struktura danych używana przez LinkedHashMap to Połączona lista i Hashtable.
  3. Rozszerza się klasa HashMap AbstractMap klasy i implementuje Mapa berło. Jednak klasa LinkedHashMap jest klasą potomną HashMap klasa tj. klasa LinkedHashMap rozszerza klasę HashMap.
  4. Klasa HashMap została wprowadzona w JDK 2.0 wersja. Klasa LinkedHashMap została wprowadzona później JDK 4.0 wersja.
  5. Porównawczo klasa LinkedHashMap ma większy narzut niż HashMap, ponieważ musi utrzymywać kolejność elementów wstawianych na mapie.

Wniosek:

LinkedHashMap może być używany tylko wtedy, gdy martwimy się sekwencją elementów wstawionych do mapy.