logo

Arbeid av HashMap i Java


Hva er Hashing

Det er prosessen med å konvertere et objekt til en heltallsverdi. Heltallsverdien hjelper til med indeksering og raskere søk.

Hva er HashMap

HashMap er en del av Java-samlingsrammeverket. Den bruker en teknikk kalt Hashing. Den implementerer kartgrensesnittet. Den lagrer dataene i paret nøkkel og verdi. HashMap inneholder en rekke av nodene, og noden er representert som en klasse. Den bruker en array og LinkedList-datastruktur internt for å lagre nøkkel og verdi. Det er fire felt i HashMap.

Arbeid av HashMap i Java

Før du forstår den interne funksjonen til HashMap, må du være klar over hashCode() og equals()-metoden.

arp-a kommando
    er lik():Den kontrollerer likheten mellom to objekter. Den sammenligner nøkkelen, enten de er like eller ikke. Det er en metode i Object-klassen. Den kan overstyres. Hvis du overstyrer equals()-metoden, er det obligatorisk å overstyre hashCode()-metoden.hashCode():Dette er metoden for objektklassen. Den returnerer minnereferansen til objektet i heltallsform. Verdien mottatt fra metoden brukes som bøttenummer. Bunnnummeret er adressen til elementet inne i kartet. Hash-koden til null-nøkkelen er 0.Bøtter:Array av noden kalles buckets. Hver node har en datastruktur som en LinkedList. Mer enn én node kan dele samme bøtte. Det kan være forskjellig i kapasitet.
Arbeid av HashMap i Java

Sett inn nøkkel, verdipar i HashMap

Vi bruker put()-metoden for å sette inn nøkkel- og verdiparet i HashMap. Standardstørrelsen på HashMap er 16 (0 til 15).

Eksempel

I det følgende eksempelet ønsker vi å sette inn tre (nøkkel, verdi) par i HashMap.

 HashMap map = new HashMap(); map.put('Aman', 19); map.put('Sunny', 29); map.put('Ritesh', 39); 

La oss se på hvilken indeks nøkkel, verdi-paret vil bli lagret i HashMap. Når vi kaller put()-metoden, beregner den hash-koden til nøkkelen 'Aman.' Anta at hash-koden til 'Aman' er 2657860. For å lagre nøkkelen i minnet, må vi beregne indeksen.

Beregner indeks

Indeks minimerer størrelsen på matrisen. Formelen for å beregne indeksen er:

 Index = hashcode(Key) & (n-1) 

Hvor n er størrelsen på matrisen. Derfor er indeksverdien for 'Aman':

 Index = 2657860 & (16-1) = 4 

Verdien 4 er den beregnede indeksverdien der nøkkelen og verdien vil lagres i HashMap.

fet tekst i css
Arbeid av HashMap i Java

Hash-kollisjon

Dette er tilfellet når den beregnede indeksverdien er den samme for to eller flere nøkler. La oss beregne hash-koden for en annen nøkkel 'Sunny'. Anta at hash-koden for 'Sunny' er 63281940. For å lagre nøkkelen i minnet, må vi beregne indeks ved å bruke indeksformelen.

 Index=63281940 & (16-1) = 4 

Verdien 4 er den beregnede indeksverdien der nøkkelen vil bli lagret i HashMap. I dette tilfellet kontrollerer metoden equals() at begge nøklene er like eller ikke. Hvis tastene er like, erstatter du verdien med gjeldende verdi. Ellers kobler du dette nodeobjektet til det eksisterende nodeobjektet gjennom LinkedList. Derfor vil begge nøklene bli lagret i indeks 4.

Arbeid av HashMap i Java

På samme måte vil vi lagre nøkkelen 'Ritesh.' Anta at hash-koden for nøkkelen er 2349873. Indeksverdien vil være 1. Derfor vil denne nøkkelen bli lagret på indeks 1.

Arbeid av HashMap i Java

get()-metoden i HashMap

get()-metoden brukes for å få verdien ved nøkkelen. Det vil ikke hente verdien hvis du ikke kjenner nøkkelen. Når get(K Key)-metoden kalles, beregner den hash-koden til nøkkelen.

Anta at vi må hente nøkkelen 'Aman.' Følgende metode vil bli kalt.

string.format java-streng
 map.get(new Key('Aman')); 

Den genererer hash-koden som 2657860. Beregn nå indeksverdien til 2657860 ved å bruke indeksformel. Indeksverdien blir 4, som vi har beregnet ovenfor. get() metodesøk etter indeksverdien 4. Den sammenligner det første elementet Key med den gitte nøkkelen. Hvis begge nøklene er like, returnerer den verdien else check for neste element i noden hvis den eksisterer. I vårt scenario blir det funnet som det første elementet i noden og returnerer verdien 19.

La oss hente en annen nøkkel 'Sunny.'

Hash-koden til nøkkelen 'Sunny' er 63281940. Den beregnede indeksverdien på 63281940 er 4, slik vi har beregnet for put()-metoden. Gå til indeks 4 av matrisen og sammenlign det første elementets nøkkel med den gitte nøkkelen. Den sammenligner også Keys. I vårt scenario er den gitte nøkkelen det andre elementet, og den neste av noden er null. Den sammenligner det andre elementet Key med den spesifiserte nøkkelen og returnerer verdien 29. Den returnerer null hvis den neste av noden er null.