Rozdiel medzi HashMap a LinkedHashMap v Jave
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.
- Porovnávacia tabuľka
- definícia
- Kľúčové rozdiely
- záver
Porovnávacia tabuľka
Základ pre porovnanie | HashMap | LinkedHashMap |
---|---|---|
základné | Poradie vkladania v HashMap nie je zachované. | Poradie vkladania je zachované v LinkedHashMap. |
Dátová štruktúra | HashMap používa HashTable na ukladanie máp. | LinkedHashMap používa HashTable spolu s Prepojeným zoznamom na uloženie mapy. |
Rozširuje / Náradie | HashMap rozširuje AbstractMap a implementuje rozhranie mapy. | LinkedHashMap rozširuje Hashmap. |
verzia | HashMap 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 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. 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.
Definícia LinkedHashMap
- Najdôležitejším rozdielom je, že poradie vkladania HashMap je neuchovávané keďže poradie vkladania LinkedHashMap je uchovaný.
- Š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.
- 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.
- HashMap trieda bola predstavená v roku JDK 2,0 verzia. Trieda LinkedHashMap bola predstavená neskôr v roku 2007 JDK 4.0 verzia.
- 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.