Atšķirība starp HashMap un Hashtable Java
Saturs
HashMap un Hashtable, abi tiek izmantoti, lai attēlotu objektu grupa kas ir pārstāvēti
Apskatīsim zemāk parādīto salīdzināšanas tabulu, lai uzzinātu vēl dažas atšķirības starp HashMap un Hashtable.
- Salīdzināšanas tabula
- Definīcija
- Galvenās atšķirības
- Līdzības
- Secinājums
Salīdzināšanas tabula
Salīdzināšanas pamats | HashMap | Jauki |
---|---|---|
Ieviest / pagarināt | HashMap klase ievieš kartes saskarni un paplašina AbstractMap klasi. | Hashtable paplašina vārdnīcas mantojuma klasi, taču tā ir pārveidota, un tagad tā arī ievieš kartes saskarni. |
Sinhronizācija | HashMap nav sinhronizēts, un līdz ar to HashMap objekts nav droši vītņots. | Hashtable tiek sinhronizēts, un tādējādi Hashtable objekts ir drošs ar pavedieniem. |
Taustiņi / vērtība | Taustiņš var atgriezt nulli tikai vienu reizi, bet vērtība var atgriezt nulli tik daudz laika. | Atslēga nevar atgriezt nulli, jo tā tiek izmantota, lai iegūtu hash kodu, kas tiks izmantots kā hash tabulas indekss, un vērtība nevar atgriezt nulli. |
Sākotnējā noklusējuma jauda | Sākotnējā HashMap sākotnējā ietilpība ir 16. | Sākotnējā Hashtable sākotnējā ietilpība ir 11. |
Šķērso | HashMap šķērso Iterator. | Tāpat kā Map klase Hashtable arī tieši neatbalsta Iterator pārvietošanos, tāpēc izmanto Enumerator. |
HashMap definīcija
HashMap ir klase, kas ievieš Karte interfeisu un paplašina AbstractMap klase izmanto hash tabulu. HashMap objekts attiecas uz kolekciju / komplektu / * K apzīmē taustiņu, un V apzīmē vērtību * / klase HashMap Pirmais konstruktors ir noklusējuma konstruktors, kurš inicializē tukšu HashMap objektu ar noklusējuma jaudu 16 un noklusējuma aizpildījuma attiecību 0,75. Otrais konstruktors inicializē jaucējkarti ar vērtību m. Trešais konstruktors izveido jaucējkarti ar sākotnējo jaudu, kas atbilst vērtībā, kas norādīta argumentā “kapacitāte”. Ceturtais konstruktors inicializē hash karti ar parametros norādīto ietilpību un piepildījuma attiecību. ļaujiet mums tagad uzzināt, kā ievadīt ierakstus hash kartē. Hashmap hm = jauna Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordānija", 200); System.out.ln (hm); / * izeja * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} Iepriekš redzamajā kodā var redzēt, ka esmu izveidojis tukšu HashMap objektu hm ar noklusējuma sākotnējo ietilpību un noklusējuma aizpildījuma attiecību. Pēc tam es ievietoju četrus ierakstus hash kartē, izmantojot metodi put (K, V), kas norāda atslēgu uz vērtību. Varat novērot, ka ieraksti netiek rediģēti secībā, kurā tos pabarojat, jo ievietošanas secība nav fiksēta. Tagad apsveriet gadījumu, kurā jums jau ir ieraksts Hashtable ir klase, kas paplašina Vārdnīca klase, kas ir mantota klase un ir pārveidota, lai ieviestu Karte saskarne. The Hashtable kā datu struktūru izmanto hash tabulu. Hashtable ir līdzīgs HashMap, jo šeit arī Hashtable objekts attiecas uz ierakstu kolekciju, kur katrs ieraksts ir pāris / * K norāda atslēgu un V norāda vērtību, kas saistīta ar atslēgu * / class Hashtable Iepriekš minētajā kodā pirmais konstruktors ir noklusējuma konstruktors, kas rada tukšu objektu klasē Hashtable, tā noklusējuma lielums ir 11 un noklusējuma aizpildīšanas koeficients ir 0,75. Otrais konstruktors izveido hash tabulu ar izmēru, kas atbilst parametrā “size” norādītajai vērtībai. Trešais konstruktors izveido hash tabulu ar parametrā norādīto izmēru un aizpildījuma attiecību. Ceturtais konstruktors inicializē hash tabulu ar vērtību m. Tagad iemācīsimies, kā ievietot Hashtable ht = jauns Hashtable (); ht.put (jauns hashCode (2), 275); ht.put (jauns hashCode (12), 250); ht.put (jauns hashCode (16), 150); ht.put (jauns hashCode (8), 200); System.out.ln (ht); / * izeja * / {12 = 250, 16 = 150,2y = 275, 8 = 200} Iepriekš minētajā kodā es izveidoju tukšu Hashtable objektu un ievietoju četrus ierakstus, izmantojot metodi put (). Iekšējās pārdošanas metodē es saucu hashCode (), kas aprēķina un atdod hash koda vērtību, kas darbosies kā ieejas objekta indeksa vērtība. Kā redzat, es neminēju hash tabulas lielumu, tāpēc pēc noklusējuma tā būs 11. Šeit arī netiek saglabāta ievietošanas kārtība un līdz ar to, ja ed ieraksti neparādījās secīgi, tā tika padota. HashMap veiktspēja ir labāka, jo tā objekti nav sinhronizēti un vairāki pavedieni tajā var darboties vienlaikus, un tādējādi tas ir ātrāks nekā Hashtable.
Hashtable definīcija
Līdzības:
Secinājums: