Skirtumas tarp „HashMap“ ir „Hashtable“ „Java“
Turinys
„HashMap“ ir „Hashtable“ yra naudojami tiek objektų grupė kurie vaizduojami
Pažiūrėkime į žemiau pateiktą palyginimo lentelę, norėdami sužinoti daugiau apie „HashMap“ ir „Hashtable“ skirtumus.
- Palyginimo diagrama
- Apibrėžimas
- Pagrindiniai skirtumai
- Panašumai
- Išvada
Palyginimo diagrama
Palyginimo pagrindas | „HashMap“ | Puikus |
---|---|---|
Įdiegti / išplėsti | „HashMap“ klasė įgyvendina žemėlapio sąsają ir praplečia „AbstractMap“ klasę. | „Hashtable“ apima „Legacy“ žodyno klasę, tačiau ji yra pertvarkyta ir dabar joje įdiegta žemėlapio sąsaja. |
Sinchronizavimas | „HashMap“ nėra sinchronizuotas, taigi „HashMap“ objektas nėra saugus sriegiais. | „Hashtable“ yra sinchronizuotas, taigi „Hashtable“ objektas yra saugus siūlams. |
Raktai / vertė | Raktas gali grąžinti nulį tik vieną kartą, bet reikšmė gali grąžinti nulį bet kurį laiką. | Raktas negali grąžinti Null, nes jis naudojamas maišos kodui gauti, kuris bus naudojamas kaip maišos lentelės rodyklė, o vertė negali grąžinti Null. |
Numatytasis pradinis pajėgumas | Numatytasis pradinis „HashMap“ talpa yra 16. | Numatytasis pradinis „Hashtable“ talpa yra 11. |
Apvažiavimas | „HashMap“ apeina „Iterator“. | Kaip ir „Map Class“ klasė, „Hashtable“ taip pat tiesiogiai nepalaiko „Iterator“ važiuodami, taigi naudoja „Enumerator“. |
Apibrėžimas HashMap
„HashMap“ yra klasė, įgyvendinanti Žemėlapis sąsaja ir praplečia AnotacijaMap klasė naudoja maišos lentelę. „HashMap“ objektas reiškia kolekciją / rinkinį / * K žymi raktą, o V reiškia reikšmę * / klasė HashMap Pirmasis konstruktorius yra numatytasis konstruktorius, kuris inicijuoja tuščią „HashMap“ objektą, kurio numatytoji talpa yra 16 ir numatytasis užpildymo santykis yra 0,75. Antrasis konstruktorius inicijuoja maišos žemėlapį su m reikšme. Trečiasis konstruktorius sukuria maišos žemėlapį su pradine talpa, atitinkančia argumentą „talpa“. Ketvirtasis konstruktorius inicijuoja maišos žemėlapį, nurodydamas parametrų talpą ir užpildymo santykį. leiskite mums dabar išmokti įterpti įrašus maišos žemėlapyje. „Hashmap hm“ = nauja „Hashmap“ (); hm.put („Ajay“, 275); hm.put („Vijay“, 250); hm.put („Jonny“, 150); hm.put („Jordan“, 200); System.out.ln (hm); / * išėjimas * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} Aukščiau esančiame kode galite pamatyti, kad aš sukūriau tuščią „HashMap“ objektą hm su numatytąja pradine talpa ir numatytuoju užpildymo santykiu. Tada aš įdėjau keturis įrašus į maišos žemėlapį, naudodamas put (K, V) metodą, kuris nusako raktą prie vertės. Galite pastebėti, kad įrašai nėra taisomi seka, kuria jūs juos pateikiate, nes įdėjimo tvarka nėra nustatyta. Dabar apsvarstykite atvejį, kai jau turite įrašą „Hashtable“ yra klasė, pratęsianti Žodynas klasė, kuri yra sena klasė ir perprojektuota įgyvendinti Žemėlapis sąsaja. „Hashtable“ naudoja maišos lentelę kaip savo duomenų struktūrą. „Hashtable“ yra panašus į „HashMap“, nes čia taip pat „Hashtable“ objektas nurodo įrašų kolekciją, kur kiekvienas įrašas yra pora / * K nurodo raktą, o V nurodo su raktu * / klasės „Hashtable“ susietą vertę Aukščiau pateiktame kode pirmasis konstruktorius yra numatytasis konstruktorius, sukuriantis tuščią klasės „Hashtable“ objektą, jo numatytasis dydis yra 11, o numatytasis užpildymo santykis yra 0,75. Antrasis konstruktorius sukuria maišos lentelę, kurios dydis atitinka parametro „dydis“ nurodytą vertę. Trečiasis konstruktorius sukuria maišos lentelę su parametru pateiktu dydžiu ir užpildymo santykiu. Ketvirtasis konstruktorius inicijuoja maišos lentelę reikšme m. Leiskite mums dabar išmokti įterpti „Hashtable ht“ = naujas „Hashtable“ (); ht.put (naujas maišos kodas (2), 275); ht.put (naujas maišos kodas (12), 250); ht.put (naujas maišos kodas (16), 150); ht.put (naujas maišos kodas (8), 200); System.out.ln (ht); / * išėjimas * / {12 = 250, 16 = 150,2y = 275, 8 = 200} Aukščiau esančiame kode aš sukūriau tuščią „Hashtable“ objektą ir įdėjau keturis įrašus naudodamas „put ()“ metodą. Inside put metodu aš vadinau hashCode (), kuris apskaičiuoja ir grąžina maišos kodo vertę, kuri veiks kaip įvesties objekto rodyklės vertė. Kaip matote, aš neminėjau maišos lentelės dydžio, taigi pagal numatytuosius nustatymus ji bus 11. Čia taip pat neišsaugoma įterpimo tvarka, taigi, kai ed įrašai nebuvo rodomi seka, jis buvo tiekiamas. „HashMap“ našumas yra geresnis, nes jos objektai nėra sinchronizuoti ir keli gijos gali tuo pačiu metu veikti, taigi, ji yra greitesnė nei „Hashtable“.
„Hashtable“ apibrėžimas
Panašumai:
Išvada: