Rozdíl mezi HashMapem a LinkedHashMapem v Javě

Autor: Laura McKinney
Datum Vytvoření: 2 Duben 2021
Datum Aktualizace: 5 Smět 2024
Anonim
Rozdíl mezi HashMapem a LinkedHashMapem v Javě - Technologie
Rozdíl mezi HashMapem a LinkedHashMapem v Javě - Technologie

Obsah


HashMap a LinkedHashMap jsou třídy, navzájem si velmi podobné a používají se k vytvoření mapy. Třída HashMap rozšiřuje třídu AbstractMap o použití hashovací tabulky k uložení prvků do mapy. Třída LinkedHashMap udržuje záznamy v mapě na základě jejich pořadí vložení. Funkce, která odlišuje HashMap a LinkedHashMap od sebe, je to Hashmap neudržuje pořadí uložených položek v mapě. Na druhou stranu, LinkedHashMap používá hybridní datovou strukturu k udržení pořadí záznamů, ve kterých byly vloženy. V níže uvedeném srovnávacím grafu jsem prozkoumal některé další rozdíly mezi HashMap a LinkedHashMap.

  1. Srovnávací tabulka
  2. Definice
  3. Klíčové rozdíly
  4. Závěr

Srovnávací tabulka

Základ pro srovnáníHashMapLinkedHashMap
ZákladníPořadí vložení v HashMap není zachováno.Pořadí vložení je zachováno v LinkedHashMap.
Datová strukturaHashMap používá HashTable k ukládání map.LinkedHashMap používá HashTable spolu s propojeným seznamem k uložení mapy.
Rozšiřuje / implementujeHashMap rozšiřuje AbstractMap a implementuje rozhraní Map.LinkedHashMap rozšiřuje Hashmap.
VerzeHashMap byl představen v JDK 2.0.LinkedHashMap byl představen v JDK 4.0.
RežiePoměrně méně režijních nákladů.Poměrně více režijních nákladů, protože musí udržovat pořadí položek mapy.


Definice HashMap

HashMap je třída, která se používá k vytvoření mapy. Realizuje se Mapa Rozhraní. Rozšiřuje také AbstractMap třídy tak, aby mohla použít hashovou tabulku k uložení položek do mapy. Zadání mapy je a pár, kde každý klíč je spojen s hodnotou. Klíč v záznamu se používá pro načtení hodnoty, proto musí být klíč jedinečný. Proto v HashMap nejsou povoleny duplicitní klíče. Klíč v každé položce mapy však může mít odlišný typ, tj. Klíče v mapě vytvořené pomocí HashMap mohou být heterogenní. Struktura dat, kterou používá HashMap k ukládání mapy, je hashova tabulka.

Pořadí vložení položek v HashMap není zachováno. Vkládání položek do mapy vytvořené pomocí HashMap je založeno na hašovacím kódu vypočítaném pomocí kláves v položkách. Pokud omylem zadáte duplicitní klíč v HashMap, nahradí předchozí hodnotu tohoto klíče novou navrhovanou hodnotou a vrátí původní hodnotu. Pokud není použit žádný duplicitní klíč a nedojde k žádné výměně, klíč vždy vrátí hodnotu Null. Podívejme se, jak přidat položky na mapu hash s následujícím příkladem.


Hashmap hm = new Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * výstup * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200}

Stejně jako ve výše uvedeném kódu vidíte, že jsem vytvořil objekt HashMap a přidal záznamy pomocí metody puts, a když jsem editoval objekt HashMap, záznamy se ne editovaly v pořadí, v jakém byly vloženy. Proto nemůžete předstírat, že pořadí položek v HashMapu se vrátí. HashMap používá všechny metody rozhraní Map a třídy AbstractMap a nezavádí žádnou novou metodu; má své vlastní konstruktéry. Výchozí kapacita mapy hash je 16 a výchozí poměr výplně je 0.75.

Definice LinkedHashMap

LinkedHashMap je také třídní způsob, jak vytvořit mapu. LinkedHashMap rozšiřuje HashMap třídy a byl zaveden později do HashMap v JDK verze 4.0. Být podřízenou třídou HashMap LinkedHashMap je přesně stejná jako třída HashMap včetně konstruktérů a metod. Ale LinkHashMap se liší v tom smyslu, že zachovává pořadí vkládání položek do mapy. Datová struktura, kterou používá LinkHashMap k uložení mapy, je spojový seznam a hash tabulka.

Kromě metod zděděných HashMap, LinkedHashMap představuje jednu novou metodu, která je removeEldestEntry (). Tato metoda se používá k odstranění nejstarší položky z mapy. Výchozí kapacita LinkedHashMap je 16 a výchozí poměr výplně je 0,75, což je také podobné třídě HashMap.

  1. Nejdůležitější rozdíl je v tom, že pořadí vkládání HashMap je nezachoval se zatímco pořadí vkládání LinkedHashMap je zachováno.
  2. Datová struktura, kterou používá HashMap k ukládání prvků mapy, je Hashtable. Na druhé straně je datová struktura používaná propojeným rozhranímHashMap Spojový seznam a Hashtable.
  3. Třída HashMap se rozšiřuje AbstractMap třídy a implementuje Mapa rozhraní. Třída LinkedHashMap je však podřízenou třídou HashMap třída tj. třída LinkedHashMap rozšiřuje třídu HashMap.
  4. HashMap třída byla představena v JDK 2.0 verze. Třída LinkedHashMap byla představena později v roce JDK 4.0 verze.
  5. Třída LinkedHashMap má relativně vyšší režii než HashMap, protože musí udržovat pořadí prvků vložených do mapy.

Závěr:

LinkedHashMap musí být použito pouze v případě, že jsme znepokojeni posloupností prvků vložených do mapy.