Különbség a HashMap és a Java hashtable között
Tartalom
A HashMap és a Hashtable egyaránt használják a tárgyak csoportja amelyek képviseltetve vannak
Nézzük meg az alább bemutatott összehasonlító táblázatot, hogy további különbségeket tudjunk meg a HashMap és a Hashtable között.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Hasonlóságok
- Következtetés
Összehasonlító táblázat
Az összehasonlítás alapja | HashMap | hash |
---|---|---|
Végrehajtás / kiterjesztés | A HashMap osztály a Map felületet valósítja meg és kiterjeszti az AbstractMap osztályt. | A Hashtable kiterjeszti a Dictionary Legacy osztályt, de újratervezték és most bevezeti a Map interfészt. |
összehangolás | A HashMap nincs szinkronizálva, így a HashMap objektum nem biztonságos. | A Hashtable szinkronizálva van, ezért a Hashtable objektuma biztonságos szál. |
Keys / Érték | Egy kulcs csak egyszer adhatja vissza a Null értékét, de egy érték tetszőleges számú Nullot eredményezhet. | A kulcs nem tudja visszaadni a Null értéket, mivel azt a kivonatkód lekérésére használják, amelyet a hash táblának indexeként használnak, és egy érték sem adhat vissza Null értéket. |
Alapértelmezett kezdeti kapacitás | A HashMap alapértelmezett kezdeti kapacitása 16. | A Hashtable alapértelmezett kezdeti kapacitása 11. |
elmozdulási | A HashMap-et az Iterator halad át. | Csakúgy, mint a Map osztály, a Hashtable sem támogatja az Iterator átjárását, ezért az Enumerator programot használja. |
Meghatározása HashMap
A HashMap egy olyan osztály, amely végrehajtja a Térkép felület és kibővíti a AbstractMap osztály használja a hash táblát. A HashMap objektuma egy gyűjteményre / készletre utal / * K jelenti a kulcsot, és V jelenti a * / osztály HashMap értéket Az első konstruktor egy alapértelmezett konstruktor, amely inicializálja a HashMap üres objektumát alapértelmezett kapacitással 16 és alapértelmezett kitöltési aránylal 0,75. A második konstruktor inicializálja a hash-térképet m értékkel. A harmadik konstruktor kivonat-térképet készít a kezdeti kapacitással, amely megfelel a „kapacitás” argumentumban megadott értéknek. A negyedik konstruktor a paraméterekben megadott kapacitással és kitöltési arányokkal inicializálja a hash-térképet. Most tanuljuk meg, hogyan kell betölteni a bejegyzéseket egy hash térképre. Hashmap hm = új Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordánia = 200} A fenti kódban látható, hogy létrehoztam egy üres HashMap objektumot hm alapértelmezett kezdeti kapacitással és alapértelmezett kitöltési arányval. Ezután négy bejegyzést beillesztettem a hash térképbe put (K, V) módszerrel, amely a kulcsot az értékre leképezi. Megfigyelheti, hogy a bejegyzéseket nem olyan sorrendben szerkesztik, amelyikkel betáplálja őket, mert a beszúrási sorrend nem rögzített. Most fontolja meg egy olyan esetet, amelyben már van bejegyzése A Hashtable egy olyan osztály, amely kiterjeszti a Szótár osztály, amely egy örökölt osztály, amelyet újraterveztek a Térkép felület. A Hashtable az adatszerkezethez a hash táblát használja. A Hashtable hasonló a HashMap-hez, mivel itt a Hashtable objektuma is a bejegyzések gyűjteményére utal, ahol minden egyes tétel pár / * K határozza meg a kulcsot és V határozza meg a * / osztály Hashtable kulcshoz társított értéket A fenti kódban az első konstruktor egy alapértelmezett konstruktor, amely létrehoz egy üres objektumot a Hashtable osztályba, alapértelmezett mérete 11 és az alapértelmezett kitöltési arány 0,75. A második konstruktor létrehoz egy kivonat-táblát, amelynek mérete megegyezik a „size” paraméterben megadott értékkel. A harmadik konstruktor létrehoz egy kivonat-táblát a paraméterben megadott mérettel és kitöltési aránygal. A negyedik konstruktor inicializálja a hash táblát m értékkel. Most tanuljuk meg, hogyan kell beilleszteni a Hashtable ht = új hashtable (); ht.put (új hashCode (2), 275); ht.put (új hash-kód (12), 250); ht.put (új hash-kód (16), 150); ht.put (új hashCode (8), 200); System.out.ln (ht); / * output * / {12 = 250, 16 = 150,2y = 275, 8 = 200} A fenti kódban létrehoztam egy üres objektumot a Hashtable-ből, és négy bejegyzést beszúrtam a put () módszerrel. Az Inside put metódust meghívtam a hashCode () -nak, amely kiszámolja és visszatér a hash-kód értékét, amely a belépési objektum indexértékévé válik. Mint láthatja, nem említettem a hash tábla méretét, tehát alapértelmezés szerint 11 lesz. Itt a beillesztési sorrend sem marad meg, és tehát, ha az ed bejegyzések nem jelentek meg egymás után, akkor az betáplálásra került. A HashMap jobb teljesítményt nyújt, mivel objektumai szinkronizálatlanok, és több szál képes egyszerre működni rajta, és ennélfogva gyorsabb, mint a hashtable.A Hashtable meghatározása
Hasonlóságok:
Következtetés: