Doporučená, 2021

Redakce Choice

Rozdíl mezi HashMap a LinkedHashMap v Javě

HashMap a LinkedHashMap jsou třídy, které jsou si navzájem velmi podobné a slouží k vytvoření mapy. Třída HashMap rozšiřuje třídu AbstractMap, aby použila hašovací tabulku k uložení prvků na mapě. Třída linkedHashMap udržuje položky v mapě na základě jejich pořadí vložení. Funkce, která odlišuje HashMap a LinkedHashMap od sebe navzájem, je, že Hashmap neudržuje pořadí uložených položek v mapě. Na druhé straně, LinkedHashMap používá hybridní datovou strukturu k udržení pořadí položek, do kterých byly vloženy. V níže uvedeném grafu porovnání jsem prozkoumal některé další rozdíly mezi HashMap a LinkedHashMap.

Srovnávací graf

Základ pro porovnáníHashMapLinkedHashMap
ZákladníObjednávka vložení v HashMapu není zachována.Objednávka vložení je zachována v souboru LinkedHashMap.
Datová strukturaHashMap používá k ukládání map HashTable.LinkedHashMap používá HashTable spolu s Link List k ukládání map.
Rozšiřuje / implementujeHashMap rozšiřuje AbstractMap a implementuje mapové rozhraní.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žie.Poměrně více režie, protože musí zachovat pořadí položek mapy.

Definice HashMap

HashMap je třída, která se používá k vytvoření mapy. Realizuje mapové rozhraní. Rozšiřuje také třídu AbstractMap tak, že může použít tabulku hash pro ukládání položek v mapě. Záznamy mapy jsou dvojice, kde je každému klíči přiřazena hodnota. Klíč v položce se používá pro načítání hodnoty, proto musí být klíč jedinečný. Proto nejsou v HashMapu povoleny duplicitní klíče. Klíč v každé položce mapy však může mít jiný typ, tj. Klíče v mapě vytvořené programem HashMap mohou být heterogenní. Datová struktura používaná programem HashMap pro ukládání mapy je hašovací tabulka.

Pořadí vložení položek v HashMap není zachováno. Vložení položek do mapy vytvořené pomocí programu HashMap je založeno na kódu hash vypočítaném klávesami v záznamech. Pokud jste omylem zadali do HashMapu duplikační klíč, nahradí předchozí hodnotu tohoto klíče novou navrhovanou hodnotou a vrátí starou hodnotu. Pokud není použit duplicitní klíč a nedošlo k žádné výměně, klíč vždy vrátí hodnotu Null. Podívejme se, jak přidat položky do hašovací mapy s následujícím příkladem.

 Hashmap hm = nový Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordánsko", 200); System.out.println (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordánsko = 200} 

Stejně jako ve výše uvedeném kódu můžete vidět, že jsem vytvořil objekt HashMap a přidal položky pomocí metody puts a když jsem vytiskl objekt HashMap, položky se nevytisknou v pořadí, v jakém byly vloženy. Proto nemůžete předstírat, že pořadí položek v HashMap se vrátí. HashMap používá všechny metody mapového rozhraní a třídy AbstractMap a nezavádí žádnou novou metodu; má své vlastní konstruktéry. Výchozí kapacita hašovací mapy je 16 a výchozí poměr výplně je 0, 75 .

Definice LinkedHashMap

LinkedHashMap je také třída použít k vytvoření mapy. LinkedHashMap rozšiřuje třídu HashMap a byl později představen HashMap ve verzi JDK 4.0. Být třída potomků třídy HashMap linkedHashMap je přesně stejná jako třída HashMap včetně konstruktorů a metod. LinkedHashMap se však liší v tom smyslu, že udržuje pořadí vložení položek do mapy. Datová struktura, kterou používá LinkHashMap k uložení mapy, je propojený seznam a hash tabulka .

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

Klíčové rozdíly mezi HashMap a LinkedHashMap v Javě

  1. Nejdůležitější rozdíl je v tom, že pořadí vkládání HashMapu není zachováno, protože je zachováno pořadí vkládání linkedHashMap.
  2. Datová struktura používaná programem HashMap pro ukládání prvků mapy je Hashtable . Na druhou stranu, datová struktura používaná linkHashMap je Linkovaný seznam a Hashtable .
  3. Třída HashMap rozšiřuje třídu AbstractMap a implementuje rozhraní Map . Třída LinkedHashMap je však podřízenou třídou třídy HashMap, tj. Třída linkedHashMap rozšiřuje třídu HashMap.
  4. Třída HashMap byla představena ve verzi JDK 2.0 . Třída LinkedHashMap byla představena později ve verzi JDK 4.0 .
  5. Třída LinkedHashMap má více režií než HashMap, protože musí udržovat pořadí prvků vložených do mapy.

Závěr:

LinkedHashMap musí být používán pouze tam, kde nás znepokojuje posloupnost prvků vložených do mapy.

Top