Rozdíl mezi HashMap a Hashtable v Javě
Obsah
HashMap a Hashtable, oba se používají k reprezentaci a skupina objektů které jsou zastoupeny v
Podívejme se na níže uvedený srovnávací graf, abychom zjistili další rozdíly mezi HashMap a Hashtable.
- Srovnávací tabulka
- Definice
- Klíčové rozdíly
- Podobnosti
- Závěr
Srovnávací tabulka
Základ pro srovnání | HashMap | Hashtable |
---|---|---|
Implementovat / rozšířit | Třída HashMap implementuje rozhraní Map a rozšiřuje třídu AbstractMap. | Hashtable rozšiřuje třídu Dictionary Legacy, ale je přepracován a nyní implementuje rozhraní Map. |
Synchronizace | HashMap je nesynchronizovaný, a proto objekt HashMap není bezpečný pomocí podprocesů. | Hashtable je synchronizován, a proto je objekt Hashtable bezpečný pro vlákna. |
Klíče / Hodnota | Klíč může vrátit Null pouze jednou, ale hodnota může vrátit Null libovolný počet časů. | Klíč nemůže vrátit Null, protože se používá k získání hash kódu, který bude použit jako index tabulky hash, ani hodnota nemůže vrátit Null. |
Výchozí počáteční kapacita | Výchozí počáteční kapacita HashMap je 16. | Výchozí počáteční kapacita Hashtable je 11. |
Traversing | HashMap prochází Iterator. | Stejně jako třída třídy Hashtable nepodporuje Iterator přímo pro procházení, a proto používá Enumerator. |
Definice HashMap
HashMap je třída, která implementuje Mapa rozhraní a rozšiřuje AbstractMap třída používá hashovou tabulku. Objekt HashMap odkazuje na kolekci / sadu / * K představuje klíč a V představuje hodnotu * / třída HashMap První konstruktor je výchozí konstruktor, který inicializuje prázdný objekt HashMap s výchozí kapacitou 16 a výchozím poměrem výplně 0,75. Druhý konstruktor inicializuje hašovací mapu hodnotou m. Třetí konstruktor vytvoří hašovací mapu s počáteční kapacitou odpovídající hodnotě uvedené v argumentu „kapacita“. Čtvrtý konstruktor inicializuje hašovací mapu s kapacitou a poměrem výplně poskytnutými v parametrech. Nyní se naučíme, jak vkládat položky do hashové mapy. 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} Ve výše uvedeném kódu vidíte, že jsem vytvořil prázdný objekt HashMap hm s výchozí počáteční kapacitou a výchozím poměrem výplně. Poté jsem do hashovy mapy vložil čtyři záznamy pomocí metody put (K, V), která mapuje klíč na hodnotu. Můžete si všimnout, že záznamy nejsou upravovány v posloupnosti, kterou je podáváte, protože pořadí vložení není pevné. Nyní zvažte případ, který již máte Hashtable je třída, která rozšiřuje Slovník třída, která je dědictví třídy a je reengineered implementovat Mapa rozhraní. Hashtable používá hash tabulku jako svou datovou strukturu. Hashtable je podobný HashMap, protože zde také odkazuje objekt Hashtable ke sbírce záznamů, kde každá položka je párem / * K určuje klíč a V určuje hodnotu spojenou s klíčem * / třída Hashtable Ve výše uvedeném kódu je první konstruktor výchozí konstruktor, který vytvoří prázdný objekt třídy Hashtable, jeho výchozí velikost je 11 a výchozí poměr výplně je 0,75. Druhý konstruktor vytvoří hašovací tabulku s velikostí odpovídající hodnotě uvedené v parametru „size“. Třetí konstruktor vytvoří hašovací tabulku s velikostí a poměrem výplně poskytnutou v parametru. Čtvrtý konstruktor inicializuje hašovací tabulku hodnotou m. Nyní se naučíme, jak vložit 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} Ve výše uvedeném kódu jsem vytvořil prázdný objekt Hashtable a vložil čtyři položky pomocí metody put (). V rámci metody put jsem zavolal hashCode (), která vypočítá a vrátí hodnotu hash kódu, která bude sloužit jako hodnota indexu pro vstupní objekt. Jak vidíte, nezmínil jsem se o velikosti hashovací tabulky, takže ve výchozím nastavení bude to 11. Zde také není pořadí vkládání zachováno, a proto, když se ed edice neobjevily v sekvenci, byly krmen. HashMap má lepší výkon, protože jeho objekty jsou nesynchronizované a může na něm pracovat více vláken současně, a proto je rychlejší než Hashtable.Definice Hashtable
Podobnosti:
Závěr: