logo

Arbejde med HashMap i Java


Hvad er Hashing

Det er processen med at konvertere et objekt til en heltalsværdi. Heltalsværdien hjælper med indeksering og hurtigere søgninger.

Hvad er HashMap

HashMap er en del af Java-samlingsrammerne. Den bruger en teknik kaldet Hashing. Det implementerer kortgrænsefladen. Det gemmer dataene i parret Nøgle og Værdi. HashMap indeholder et array af noderne, og noden er repræsenteret som en klasse. Den bruger en array og LinkedList-datastruktur internt til lagring af nøgle og værdi. Der er fire felter i HashMap.

Arbejde med HashMap i Java

Før du forstår den interne funktion af HashMap, skal du være opmærksom på hashCode() og equals() metoden.

heltal dobbelt java
    lige med():Det kontrollerer ligheden mellem to objekter. Den sammenligner Nøglen, uanset om de er ens eller ej. Det er en metode af klassen Object. Det kan tilsidesættes. Hvis du tilsidesætter equals()-metoden, er det obligatorisk at tilsidesætte hashCode()-metoden.hashCode():Dette er metoden for objektklassen. Det returnerer objektets hukommelsesreference i heltalsform. Værdien modtaget fra metoden bruges som spandnummer. Spandnummeret er adressen på elementet inde i kortet. Hash-koden for null Nøglen er 0.Bøtter:Array af noden kaldes buckets. Hver node har en datastruktur som en LinkedList. Mere end én node kan dele den samme bøtte. Det kan være forskelligt i kapacitet.
Arbejde med HashMap i Java

Indsæt nøgle, værdipar i HashMap

Vi bruger put()-metoden til at indsætte nøgle- og værdiparret i HashMap. Standardstørrelsen på HashMap er 16 (0 til 15).

Eksempel

I det følgende eksempel ønsker vi at indsætte tre (Nøgle, Værdi) par i HashMap.

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

Lad os se, i hvilket indeks nøgle-værdiparret vil blive gemt i HashMap. Når vi kalder put()-metoden, så beregner den hash-koden for nøglen 'Aman'. Antag at hash-koden for 'Aman' er 2657860. For at gemme nøglen i hukommelsen, skal vi beregne indekset.

Beregning af indeks

Indeks minimerer størrelsen af ​​arrayet. Formlen til beregning af indekset er:

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

Hvor n er størrelsen af ​​arrayet. Derfor er indeksværdien for 'Aman':

 Index = 2657860 & (16-1) = 4 

Værdien 4 er den beregnede indeksværdi, hvor nøglen og værdien gemmes i HashMap.

hvornår starter q2
Arbejde med HashMap i Java

Hash kollision

Dette er tilfældet, når den beregnede indeksværdi er den samme for to eller flere nøgler. Lad os beregne hash-koden for en anden nøgle 'Sunny'. Antag at hash-koden for 'Sunny' er 63281940. For at gemme nøglen i hukommelsen, skal vi beregne indeks ved at bruge indeksformlen.

 Index=63281940 & (16-1) = 4 

Værdien 4 er den beregnede indeksværdi, hvor nøglen vil blive gemt i HashMap. I dette tilfælde kontrollerer metoden equals() at begge nøgler er ens eller ej. Hvis nøglerne er de samme, skal du erstatte værdien med den aktuelle værdi. Ellers skal du forbinde dette nodeobjekt til det eksisterende nodeobjekt gennem LinkedList. Derfor vil begge nøgler blive gemt i indeks 4.

Arbejde med HashMap i Java

På samme måde gemmer vi nøglen 'Ritesh'. Antag, at hash-koden for nøglen er 2349873. Indeksværdien vil være 1. Derfor vil denne nøgle blive gemt i indeks 1.

Arbejde med HashMap i Java

get() metode i HashMap

get() metoden bruges til at få værdien ved dens nøgle. Det vil ikke hente værdien, hvis du ikke kender nøglen. Når get(K Key)-metoden kaldes, beregner den nøglens hash-kode.

Antag, at vi skal hente nøglen 'Aman'. Følgende metode vil blive kaldt.

logo java
 map.get(new Key('Aman')); 

Det genererer hash-koden som 2657860. Beregn nu indeksværdien på 2657860 ved at bruge indeksformlen. Indeksværdien bliver 4, som vi har beregnet ovenfor. get() metodesøgning efter indeksværdien 4. Den sammenligner det første element Key med den givne nøgle. Hvis begge nøgler er ens, returnerer den værdien ellers check for det næste element i noden, hvis det eksisterer. I vores scenarie findes det som det første element i noden og returnerer værdien 19.

Lad os hente en anden nøgle 'Sunny'.

Hashkoden for nøglen 'Sunny' er 63281940. Den beregnede indeksværdi på 63281940 er 4, som vi har beregnet for put()-metoden. Gå til indeks 4 i arrayet og sammenlign det første elements nøgle med den givne nøgle. Den sammenligner også Keys. I vores scenarie er den givne nøgle det andet element, og det næste af noden er null. Den sammenligner det andet element Nøgle med den angivne Nøgle og returnerer værdien 29. Den returnerer null, hvis den næste af noden er null.