Rozdiel medzi HashMap a Hashtable v Jave
Obsah
HashMap a Hashtable sa používajú na označenie a skupina objektov ktoré sú zastúpené v
Pozrime sa na nasledujúcu porovnávaciu tabuľku, aby sme sa dozvedeli viac rozdielov medzi HashMap a Hashtable.
- Porovnávacia tabuľka
- definícia
- Kľúčové rozdiely
- podobnosti
- záver
Porovnávacia tabuľka
Základ pre porovnanie | HashMap | Hashtable |
---|---|---|
Implementácia / rozšírenie | Trieda HashMap implementuje rozhranie Map a rozširuje triedu AbstractMap. | Hashtable rozširuje triedu Dictionary Legacy, ale je prepracovaný a teraz implementuje aj Mapové rozhranie. |
synchronizácia | HashMap je nesynchronizovaný, a preto objekt HashMap nie je bezpečný. | Hashtable je synchronizovaný, a preto je objekt Hashtable bezpečný pre vlákna. |
Tlačidlá / hodnota | Kľúč môže vrátiť hodnotu Null iba raz, ale hodnota môže vrátiť hodnotu Null ľubovoľný počet časov. | Kľúč nemôže vrátiť hodnotu Null, pretože sa používa na získanie kódu hash, ktorý sa použije ako index tabuľky hash, ani hodnota nemôže vrátiť hodnotu Null. |
Predvolená počiatočná kapacita | Predvolená počiatočná kapacita HashMap je 16. | Predvolená počiatočná kapacita Hashtable je 11. |
pojazdový | HashMap prechádza Iterator. | Rovnako ako mapa triedy Hashtable tiež priamo nepodporuje Iterator pre prechádzanie, a preto používa Enumerator. |
Definícia HashMap
HashMap je trieda, ktorá implementuje mapa rozhranie a rozširuje AbstractMap trieda používa hashovaciu tabuľku. Objekt HashMap odkazuje na kolekciu / množinu / * K predstavuje kľúč a V predstavuje hodnotu * / trieda HashMap Prvý konštruktor je predvolený konštruktor, ktorý inicializuje prázdny objekt HashMap s predvolenou kapacitou 16 a predvoleným pomerom plnenia 0,75. Druhý konštruktor inicializuje hašovaciu mapu s hodnotou m. Tretí konštruktér vytvorí hašovaciu mapu s počiatočnou kapacitou zodpovedajúcou hodnote poskytnutej v argumente „kapacita“. Štvrtý konštruktor inicializuje hašovaciu mapu s kapacitou a pomerom vyplnenia poskytnutými v parametroch. Poďme sa teraz naučiť, ako vložiť položky do mapy hash. 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} Vo vyššie uvedenom kóde vidíte, že som vytvoril prázdny objekt HashMap hm s predvolenou počiatočnou kapacitou a predvoleným pomerom plnenia. Potom som do hashovej mapy vložil štyri záznamy pomocou metódy put (K, V), ktorá mapuje kľúč na hodnotu. Môžete si všimnúť, že záznamy nie sú upravené v poradí, v akom ich podávate, pretože poradie vkladania nie je pevne stanovené. Teraz zvážte prípad, ktorý už máte zadaný Hashtable je trieda, ktorá rozširuje internet slovník trieda, ktorá je dedičnou triedou a je upravená na implementáciu mapa rozhranie. Hashtable používa hašovaciu tabuľku ako svoju dátovú štruktúru. Hashtable je podobný ako HashMap, pretože tu tiež odkazuje objekt Hashtable na zbierku záznamov, kde každá položka je párom / * K určuje kľúč a V určuje hodnotu spojenú s kľúčom * / trieda Hashtable Vo vyššie uvedenom kóde je prvý konštruktor predvolený konštruktor, ktorý vytvára prázdny objekt triedy Hashtable, jeho predvolená veľkosť je 11 a predvolený pomer plnenia je 0,75. Druhý konštruktor vytvorí hašovaciu tabuľku s veľkosťou zodpovedajúcou hodnote uvedenej v parametri „size“. Tretí konštruktor vytvorí hašovaciu tabuľku s veľkosťou a výplňovým pomerom poskytnutým v parametri. Štvrtý konštruktor inicializuje hashovaciu tabuľku hodnotou m. Naučme sa teraz, ako vložiť Hashtable ht = new Hashtable (); ht.put (nový hashCode (2), 275); ht.put (nový hashCode (12), 250); ht.put (nový hashCode (16), 150); ht.put (nový hashCode (8), 200); System.out.ln (ht); / * výstup * / {12 = 250, 16 = 150,2y = 275, 8 = 200} Vo vyššie uvedenom kóde som vytvoril prázdny objekt Hashtable a pomocou metódy put () som vložil štyri záznamy. V rámci metódy put som zavolal hashCode (), ktorá vypočíta a vráti hodnotu hash kódu, ktorá bude slúžiť ako hodnota indexu pre vstupný objekt. Ako vidíte, nespomenul som veľkosť hashovej tabuľky, takže v predvolenom nastavení to bude 11. Aj tu sa poradie vkladania nezachová, a teda keď sa ed edície neobjavili v poradí, v akom boli kŕmené. HashMap má lepšiu výkonnosť, pretože jeho objekty sú nesynchronizované a na ňom môže fungovať viacero vlákien súčasne, a preto je rýchlejší ako Hashtable.
Definícia hashtable
podobnosti:
záver: