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.
Før du forstår den interne funksjonen til HashMap, må du være klar over hashCode() og equals()-metoden.
arp-a kommando
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
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.
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.
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.