
Srovnávací graf
Základ pro porovnání | HashMap | LinkedHashMap |
---|---|---|
Základní | Objednávka vložení v HashMapu není zachována. | Objednávka vložení je zachována v souboru LinkedHashMap. |
Datová struktura | HashMap používá k ukládání map HashTable. | LinkedHashMap používá HashTable spolu s Link List k ukládání map. |
Rozšiřuje / implementuje | HashMap rozšiřuje AbstractMap a implementuje mapové rozhraní. | 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ž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ě
- 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.
- 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 .
- 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.
- Třída HashMap byla představena ve verzi JDK 2.0 . Třída LinkedHashMap byla představena později ve verzi JDK 4.0 .
- 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.