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.
Før du forstår den interne funktion af HashMap, skal du være opmærksom på hashCode() og equals() metoden.
heltal dobbelt 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
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.
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.
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.