Porovnávacia tabuľka
Základ pre porovnanie | HashMap | LinkedHashMap |
---|---|---|
základné | Poradie vloženia do HashMap sa nezachovalo. | Poradie vloženia sa zachovalo v LinkedHashMap. |
Dátová štruktúra | HashMap používa HashTable na ukladanie máp. | LinkedHashMap používa HashTable spolu s prepojeným zoznamom na ukladanie mapy. |
Rozširuje / Náradie | HashMap rozširuje AbstractMap a implementuje rozhranie Map. | LinkedHashMap rozširuje Hashmap. |
verzia | HashMap bol predstavený v JDK 2.0. | LinkedHashMap bol predstavený v JDK 4.0. |
horný | Porovnateľne menej režijné náklady. | Porovnateľne viac režijných nákladov, pretože musí zachovať poradie záznamov v mape. |
Definícia HashMapu
HashMap je trieda, ktorá sa používa na vytvorenie mapy. Implementuje Mapové rozhranie. Tiež rozširuje triedu AbstractMap tak, aby mohla použiť tabuľku hash na uloženie položiek na mape. Položky mapy sú dvojice, kde je každý kľúč spojený s hodnotou. Kľúč v položke sa používa na získanie hodnoty, preto musí byť kľúč jedinečný. Preto v HashMap nie sú povolené duplicitné kľúče. Kľúč v každom vstupe mapy môže mať iný typ, tj kľúče na mape vytvorené HashMapom môžu byť heterogénne. Dátová štruktúra, ktorú HashMap používa na ukladanie mapy, je tabuľka hash.
Poradie vkladania položiek v HashMap sa nezachovalo. Vloženie položiek do mapy vytvorenej pomocou HashMap je založené na hashode vypočítanom kľúčmi 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 sa nepoužíva duplicitný kľúč a nenastane nijaká náhrada, kľúč vždy vráti hodnotu Null. Pozrite sa, ako pridať položky na hash map s nasledujúcim príkladom.
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); / * výstup * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordánsko = 200}
Rovnako ako vo vyššie uvedenom kóde môžete vidieť, že som vytvoril objekt HashMap a pridal položky pomocou metódy puts a keď som vytlačil objekt HashMap, položky nie sú vytlačené v poradí, v akom boli vložené. Preto nemôžete predstierať, že poradie položiek v HashMap sa vráti. HashMap používa všetky metódy rozhrania Map a AbstractMap triedy a nezavádza žiadnu novú metódu; má vlastné konštruktory. Predvolená kapacita mapy hash je 16 a predvolený pomer preplnenia je 0, 75 .
Definícia LinkedHashMap
LinkedHashMap je tiež trieda používať na vytvorenie mapy. LinkedHashMap rozširuje triedu HashMap a bol neskôr zavedený do aplikácie HashMap v verzii JDK 4.0. Trieda detí triedy HashMap LinkedHashMap je presne rovnaká ako trieda HashMap vrátane konštruktorov a metód. LinkedHashMap sa však líši v tom zmysle, že zachováva poradie vloženia položiek do mapy. Štruktúra údajov, ktorú používa LinkedHashMap na ukladanie mapy, je prepojený zoznam a hashová tabuľka .
Okrem metód zdedených HashMapom, LinkedHashMap zavádza novú metódu, ktorá je removeEldestEntry () . Táto metóda slúži na odstránenie najstaršej položky na mape. Predvolená kapacita LinkedHashMap je 16 a predvolený pomer plnenia je 0, 75, čo je tiež podobné triede HashMap.
Kľúčové rozdiely medzi HashMap a LinkedHashMap v jazyku Java
- Najdôležitejším rozdielom je to, že poradie vkladania HashMap sa nezachovalo, zatiaľ čo poradie vkladania LinkedHashMap sa zachovalo .
- Dátová štruktúra, ktorú HashMap používa na ukladanie prvkov mapy, je Hashtable . Na druhej strane štruktúra údajov, ktorú používa LinkedHashMap, je prepojený zoznam a Hashtable .
- Trieda HashMap rozširuje triedu AbstractMap a implementuje rozhranie Map . Trieda LinkedHashMap je však podradená trieda triedy HashMap, tj trieda LinkedHashMap rozširuje triedu HashMap.
- Trieda HashMap bola uvedená do verzie JDK 2.0 . Trieda LinkedHashMap bola zavedená neskôr v verzii JDK 4.0 .
- Porovnávacia trieda LinkedHashMap má viac režijných nákladov ako HashMap, pretože má zachovať poradie prvkov vložených do mapy.
záver:
LinkedHashMap musí byť použitý len vtedy, keď nás zaujíma poradie prvkov vložených do mapy.