Razlika med Java in HashMapom
Vsebina
HashMap in Hashtable, oba se uporabljata za predstavljanje a skupina predmetov ki so predstavljeni v
Poglejmo spodnjo primerjalno tabelo, če želite izvedeti še nekaj razlik med HashMapom in Hashtable-om.
- Primerjalna tabela
- Opredelitev
- Ključne razlike
- Podobnosti
- Zaključek
Primerjalna tabela
Osnove za primerjavo | HashMap | Hashtable |
---|---|---|
Izvedba / razširitev | Razred HashMap izvaja vmesnik Map in razširja razred AbstractMap. | Hashtable razširja razred Legacy, vendar je na novo zasnovan in zdaj uporablja tudi vmesnik Map. |
Sinhronizacija | HashMap je nesinhroniziran, zato objekt HashMap ni varno z navojem. | Hashtable je sinhroniziran, zato je predmet Hashtable varno na nitkah. |
Ključi / vrednost | Ključ lahko Null vrne samo enkrat, vrednost pa lahko Null vrne poljubno število. | Ključ ne more vrniti Null, saj je uporabljen za pridobitev hash kode, ki bo uporabljena kot indeks hash tabele, niti vrednost ne more vrniti Null. |
Privzeta začetna zmogljivost | Privzeta začetna zmogljivost HashMap-a je 16. | Privzeta začetna zmogljivost Hashtable-a je 11. |
Potovanje | HashMap prečka Iterator. | Tako kot razred razred Hashtable tudi Iterator ne podpira neposredno prehajanja, zato uporablja Enumerator. |
Opredelitev HashMap-a
HashMap je razred, ki izvaja program Zemljevid vmesnik in razširja AbstractMap razred uporablja hash tabelo. Predmet HashMap se nanaša na zbirko / niz / * K predstavlja ključ, V pa vrednost * / razred HashMap Prvi konstruktor je privzeti konstruktor, ki inicializira prazen predmet HashMap s privzeto zmogljivostjo 16 in privzeto razmerje polnjenja 0,75. Drugi konstruktor inicializira hash zemljevid z vrednostjo m. Tretji konstruktor ustvari hash map z začetno zmogljivostjo, ki ustreza vrednosti, podani v argumentu "zmogljivost". Četrti konstruktor inicializira hash map z zmogljivostjo in razmerjem polnjenja, ki je naveden v parametrih. dovolite, da se zdaj naučimo, kako vnašati na vhodne karte. Hashmap hm = nov Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * izhod * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} V zgornji kodi vidite, da sem ustvaril prazen predmet HashMap hm s privzeto začetno zmogljivostjo in privzeto razmerje polnjenja. Nato sem v hash map vstavil štiri vnose po metodi put (K, V), ki ključ preslika na vrednost. Lahko opazite, da vnosi niso urejeni v zaporedju, v katerem jih hranite, ker vrstni red vstavljanja ni določen. Zdaj razmislite o primeru, v katerem že imate vnos Hashtable je razred, ki podaljša Slovar razreda, ki je podedovani razred in je prenovljen za izvajanje Zemljevid vmesnik. Hashtable kot svojo strukturo podatkov uporablja hash tabelo. Hashtable je podoben HashMapu, saj se tudi tukaj predmet Hashtable nanaša na zbirko vnosov, kjer je vsak vnos par / * K poda ključ, V pa vrednost, povezano s tipko * / razred Hashtable V zgornji kodi je prvi konstruktor privzeti konstruktor, ki ustvari prazen predmet razreda Hashtable, njegova privzeta velikost je 11, privzeto razmerje polnjenja pa 0,75. Drugi konstruktor ustvari hash tabelo z velikostjo, ki ustreza vrednosti, podani v parametru "size". Tretji konstruktor ustvari hash tabelo z velikostjo in razmerjem polnjenja v parametru. Četrti konstruktor inicializira hash tabelo z vrednostjo m. Naučimo se zdaj, kako vstaviti Hashtable ht = nov 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); / * izhod * / {12 = 250, 16 = 150,2y = 275, 8 = 200} V zgornji kodi sem ustvaril prazen predmet Hashtable in vstavil štiri vnose po metodi put (). Znotraj postavljene metode sem poklical hashCode (), ki izračuna in vrne vrednost hash kode, ki bo delovala kot vrednost indeksa za vnosni objekt. Kot lahko vidite, nisem omenil velikosti hash tabele, zato bo privzeto enaka 11. Tukaj tudi vrstni red vstavljanja ni ohranjen, torej, ko se vnosi ed niso pojavili v zaporedju, ko je bil vstavljen. HashMap je boljši v zmogljivosti, saj so njegovi predmeti nesinhronizirani in nanje lahko hkrati deluje več niti, zato je hitrejši od Hashtable-a.
Opredelitev Hashtable-a
Podobnosti:
Zaključek: