Rozdiel medzi HashMap a LinkedHashMap v Jave

Autor: Laura McKinney
Dátum Stvorenia: 2 Apríl 2021
Dátum Aktualizácie: 10 Smieť 2024
Anonim
Rozdiel medzi HashMap a LinkedHashMap v Jave - Technológie
Rozdiel medzi HashMap a LinkedHashMap v Jave - Technológie

Obsah


HashMap a LinkedHashMap sú triedy, navzájom veľmi podobné a používajú sa na vytvorenie mapy. Trieda HashMap rozširuje triedu AbstractMap o použitie hashovej tabuľky na ukladanie prvkov do mapy. Trieda LinkedHashMap udržuje záznamy v mape na základe ich poradia vloženia. Funkcia, ktorá odlišuje HashMap a LinkedHashMap od seba, je HashMap neuchováva poradie uložených položiek na mape. Na druhej strane, LinkedHashMap používa hybridnú štruktúru údajov na udržiavanie poradia záznamov, v ktorých boli vložené. V porovnávacom grafe nižšie som skúmal niektoré ďalšie rozdiely medzi HashMap a LinkedHashMap.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. záver

Porovnávacia tabuľka

Základ pre porovnanieHashMapLinkedHashMap
základnéPoradie vkladania v HashMap nie je zachované.Poradie vkladania je zachované v LinkedHashMap.
Dátová štruktúraHashMap používa HashTable na ukladanie máp.LinkedHashMap používa HashTable spolu s Prepojeným zoznamom na uloženie mapy.
Rozširuje / NáradieHashMap rozširuje AbstractMap a implementuje rozhranie mapy.LinkedHashMap rozširuje Hashmap.
verziaHashMap bol predstavený v JDK 2.0.LinkedHashMap bol predstavený v JDK 4.0.
hornýPomerne menej režijné náklady.Pomerne viac režijných nákladov, pretože musí zachovať poradie položiek mapy.


Definícia HashMap

HashMap je trieda, ktorá sa používa na vytvorenie mapy. Implementuje sa mapa Rozhranie. Rozširuje aj AbstractMap trieda tak, aby mohla použiť hašovaciu tabuľku na ukladanie záznamov do mapy. Zadania mapy sú a pár, kde je každý kľúč priradený k hodnote. Kľúč v položke sa používa na získanie hodnoty, preto musí byť kľúč jedinečný. Z tohto dôvodu nie sú v HashMape povolené duplicitné kľúče. Kľúč v každom zázname mapy však môže mať odlišný typ, t. J. Kľúče v mape vytvorené pomocou HashMap môžu byť heterogénne. Štruktúra údajov, ktorú používa HashMap na ukladanie máp, je hašovacia tabuľka.

Poradie vkladania položiek v HashMap sa nezachová. Vkladanie záznamov do mapy vytvorenej pomocou HashMap je založené na hashovom kóde vypočítanom pomocou klávesov v položkách. Ak ste omylom zadali duplicitný kľúč v HashMap, nahradí predchádzajúcu hodnotu tohto kľúča novou navrhovanou hodnotou a vráti starú hodnotu. Ak nie je použitý žiadny duplikát kľúča a nedošlo k žiadnej výmene, kľúč vždy vráti hodnotu Null. Pozrime sa, ako pridať položky na mapu hash s nasledujúcim príkladom.


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}

Rovnako ako vo vyššie uvedenom kóde vidíte, že som vytvoril objekt HashMap a pridal záznamy pomocou metódy puts a keď som editoval objekt HashMap, záznamy sa neupravovali v poradí, v akom boli vložené. Z tohto dôvodu nemôžete predstierať poradie položiek v HashMap sa vráti. HashMap používa všetky metódy Mapového rozhrania a triedy AbstractMap a nezavádza žiadnu novú metódu; má svojich vlastných konštruktorov. Predvolená kapacita mapy hash je 16 a predvolený pomer plnenia je 0.75.

Definícia LinkedHashMap

LinkedHashMap je tiež trieda na vytvorenie mapy. LinkedHashMap rozširuje HashMap triedy a bol zavedený neskôr do HashMap v JDK verzie 4.0. Byť podriadenou triedou triedy HashMap LinkedHashMap je úplne rovnaká ako trieda HashMap vrátane konštruktorov a metód. Ale LinkHashMap sa líši v tom zmysle, že zachováva poradie vkladania záznamov do mapy. Štruktúra údajov, ktorú používa LinkHashMap na ukladanie mapy, je prepojený zoznam a hash tabuľka.

Okrem metód zdedených pomocou HashMap, LinkedHashMap predstavuje jednu novú metódu, ktorou je removeEldestEntry (), Táto metóda sa používa na odstránenie najstaršej položky z mapy. Predvolená kapacita programu LinkedHashMap je 16 a predvolený pomer plnenia je 0,75, čo je tiež podobné triede HashMap.

  1. Najdôležitejším rozdielom je, že poradie vkladania HashMap je neuchovávané keďže poradie vkladania LinkedHashMap je uchovaný.
  2. Štruktúra údajov, ktorú používa HashMap na ukladanie prvkov mapy, je Hashtable, Na druhej strane dátová štruktúra, ktorú používa LinkedHashMap, je Prepojený zoznam a Hashtable.
  3. Trieda HashMap sa rozširuje AbstractMap trieda a implementuje mapa rozhranie. Trieda LinkedHashMap je však podradenou triedou HashMap trieda, t. j. trieda LinkedHashMap rozširuje triedu HashMap.
  4. HashMap trieda bola predstavená v roku JDK 2,0 verzia. Trieda LinkedHashMap bola predstavená neskôr v roku 2007 JDK 4.0 verzia.
  5. Pomerne trieda LinkedHashMap má viac režijných nákladov ako HashMap, pretože musí zachovať poradie prvkov vložených do mapy.

záver:

LinkedHashMap sa musí používať iba v prípade, že máme obavy o postupnosť prvkov vložených do mapy.