Rozdíl mezi HashMapem a LinkedHashMapem v Javě
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.
- Srovnávací tabulka
- Definice
- Klíčové rozdíly
- Závěr
Srovnávací tabulka
Základ pro srovnání | HashMap | LinkedHashMap |
---|---|---|
Základní | Pořadí vložení v HashMap není zachováno. | Pořadí vložení je zachováno v LinkedHashMap. |
Datová struktura | HashMap používá HashTable k ukládání map. | LinkedHashMap používá HashTable spolu s propojeným seznamem k uložení mapy. |
Rozšiřuje / implementuje | HashMap rozšiřuje AbstractMap a implementuje rozhraní Map. | LinkedHashMap rozšiřuje Hashmap. |
Verze | HashMap byl představen v JDK 2.0. | LinkedHashMap byl představen v JDK 4.0. |
Režie | Pomě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 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. 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.
Definice LinkedHashMap
- 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.
- 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.
- 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.
- 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.
- 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.