Forskjellen mellom HashMap og Hashtable i Java
Innhold
HashMap og Hashtable, begge brukes til å representere en gruppe av objekter som er representert i
La oss se på sammenligningstabellen nedenfor for å lære flere forskjeller mellom HashMap og Hashtable.
- Sammenligningstabell
- Definisjon
- Viktige forskjeller
- likheter
- Konklusjon
Sammenligningstabell
Grunnlag for sammenligning | HashMap | hashtabellen |
---|---|---|
Implementere / utvide | HashMap-klassen implementerer kartgrensesnitt og utvider en AbstractMap-klasse. | Hashtabellen strekker seg fra Dictionary Legacy-klassen, men den er omkonstruert og nå implementerer den også Kart-grensesnittet. |
synkronisering | HashMap er ikke synkronisert, og følgelig er HashMap-objektet ikke tredd sikkert. | Hashtable er synkronisert, og følgelig er Hashtable-objektet trådsikker. |
Keys / verdi | En tast kan returnere Null bare én gang, men en verdi kan returnere Null når som helst. | En nøkkel kan ikke returnere Null, fordi den brukes til å få hasjkoden som vil bli brukt som en indeks for hasjbordet, og heller ikke en verdi kan returnere Null. |
Standard startkapasitet | Standard initialkapasitet på HashMap er 16. | Standard initialkapasitet på Hashtable er 11. |
traversering | HashMap blir krysset av Iterator. | Som at Map-klassen Hashtable heller ikke direkte støtter Iterator for å krysse og dermed bruker den Enumerator. |
Definisjon av HashMap
HashMap er en klasse som implementerer Kart grensesnitt og utvider AbstractMap klasse bruker hasjbordet. HashMap-objektet refererer til en samling / sett med / * K representerer nøkkel, og V representerer verdi * / klasse HashMap Den første konstruktøren er en standardkonstruktør som initialiserer et tomt objekt fra HashMap med en standardkapasitet på 16 og et standardfyllingsforhold på 0,75. Den andre konstruktøren initialiserer hasjkartet med verdien m. Den tredje konstruktøren lager et hashkart med den innledende kapasiteten som tilsvarer verdien gitt i argumentet “kapasitet”. Den fjerde konstruktøren initialiserer hasjkart med kapasitet og fyllingsforhold gitt i parametrene. la oss nå lære å mate oppføringene på et hasjkart. Hashmap hm = new Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * utgang * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} I koden over kan du se at jeg opprettet et tomt HashMap-objekt hm med standard startkapasitet og standard fyllingsforhold. Så satte jeg inn fire oppføringer i hasjkartet ved hjelp av put (K, V) -metoden som kartlegger nøkkelen til verdien. Du kan se at oppføringer ikke er redigert i en sekvens du mater dem fordi innsettingsrekkefølgen ikke er fast. Nå, vurder en sak som du allerede har en oppføring Hashtable er en klasse som utvider Ordbok klasse som er en arv klasse og reengineerered å implementere Kart grensesnitt. Hashtabellen bruker hasjtabellen som datastruktur. Hashtabellen ligner på HashMap som her også refererer objektet til Hashtable samlingen av oppføringer der hver oppføring er et par av / * K spesifiserer nøkkelen og V spesifiserer verdien tilknyttet nøkkelen * / klasse Hashtable I koden over er den første konstruktøren en standardkonstruktør som oppretter et tomt objekt av en klasse Hashtable, standardstørrelsen er 11 og standard fyllingsforhold er 0,75. Den andre konstruktøren lager en hasjtabell med størrelsen som tilsvarer verdien gitt i parameteren “størrelse”. Den tredje konstruktøren lager et hasjbord med en størrelse og et fyllingsforhold gitt i parameteren. Den fjerde konstruktøren initialiserer hasjbordet med verdien m. La oss nå lære hvordan du setter inn Hashtable ht = new Hashtable (); ht.put (ny hashCode (2), 275); ht.put (ny hashCode (12), 250); ht.put (ny hashCode (16), 150); ht.put (ny hashCode (8), 200); System.out.ln (ht); / * utgang * / {12 = 250, 16 = 150,2y = 275, 8 = 200} I koden over opprettet jeg et tomt objekt fra Hashtable og satte inn fire oppføringer ved å bruke put () -metoden. Inside put-metoden kalte jeg hashCode () som beregner og returnerer hashkodeverdien som vil fungere som indeksverdien for oppføringsobjekt. Som du ser nevnte jeg ikke størrelsen på hasjetabellen, så som standard vil den være 11. Her er ikke innsettelsesrekkefølge bevart, og når redigerte oppføringer ikke vises i sekvens ble den matet. HashMap har bedre ytelse ettersom objektene er usynkroniserte og flere tråder kan operere på den samtidig, og derfor er den raskere enn Hashtable.
Definisjon av Hashtable
likheter:
Konklusjon: