logo

Rad HashMapa u Javi


Što je hashiranje

To je proces pretvaranja objekta u cjelobrojnu vrijednost. Vrijednost cijelog broja pomaže u indeksiranju i bržim pretragama.

Što je HashMap

HashMap je dio okvira Java zbirke. Koristi tehniku ​​koja se zove Hashing. Implementira sučelje karte. Pohranjuje podatke u par ključa i vrijednosti. HashMap sadrži niz čvorova, a čvor je predstavljen kao klasa. Interno koristi niz i podatkovnu strukturu LinkedList za pohranjivanje ključa i vrijednosti. U HashMapu postoje četiri polja.

Rad HashMapa u Javi

Prije razumijevanja internog rada HashMap-a, morate biti svjesni metoda hashCode() i equals().

pande i numpy
    jednako():Provjerava jednakost dvaju objekata. Uspoređuje ključ, bez obzira jesu li jednaki ili ne. To je metoda klase Object. Može se nadjačati. Ako nadjačate metodu equals(), tada je obavezno nadjačati metodu hashCode().hashCode():Ovo je metoda klase objekta. Vraća memorijsku referencu objekta u obliku cijelog broja. Vrijednost primljena od metode koristi se kao broj spremnika. Broj spremnika je adresa elementa unutar karte. Hash kod nultog ključa je 0.Kante:Niz čvora naziva se bucket. Svaki čvor ima strukturu podataka poput LinkedList-a. Više od jednog čvora može dijeliti istu kantu. Može biti različitog kapaciteta.
Rad HashMapa u Javi

Umetnite par ključeva i vrijednosti u HashMap

Koristimo metodu put() za umetanje para ključa i vrijednosti u HashMap. Zadana veličina HashMapa je 16 (0 do 15).

Primjer

U sljedećem primjeru želimo umetnuti tri para (ključ, vrijednost) u HashMap.

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

Pogledajmo na kojem će indeksu ključ, vrijednost par biti spremljen u HashMap. Kada pozovemo put() metodu, ona izračunava hash kod ključa 'Aman'. Pretpostavimo da je hash kod 'Aman' 2657860. Da bismo pohranili ključ u memoriju, moramo izračunati indeks.

Izračunavanje indeksa

Indeks minimizira veličinu niza. Formula za izračunavanje indeksa je:

c++ funkcija prototipa
 Index = hashcode(Key) & (n-1) 

Gdje je n veličina niza. Stoga je vrijednost indeksa za 'Aman':

 Index = 2657860 & (16-1) = 4 

Vrijednost 4 je izračunata vrijednost indeksa gdje će se ključ i vrijednost pohraniti u HashMap.

Rad HashMapa u Javi

Hash kolizija

Ovo je slučaj kada je izračunata vrijednost indeksa ista za dva ili više ključeva. Izračunajmo hash kod za drugi ključ 'Sunny'. Pretpostavimo da je hash kod za 'Sunny' 63281940. Da bismo pohranili ključ u memoriju, moramo izračunati indeks pomoću formule indeksa.

 Index=63281940 & (16-1) = 4 

Vrijednost 4 je izračunata vrijednost indeksa gdje će ključ biti pohranjen u HashMap. U ovom slučaju, metoda equals() provjerava jesu li oba ključa jednaka ili ne. Ako su ključevi isti, zamijenite vrijednost trenutnom vrijednošću. U suprotnom, povežite ovaj objekt čvora s postojećim objektom čvora putem LinkedList-a. Stoga će oba ključa biti pohranjena pod indeksom 4.

Rad HashMapa u Javi

Slično ćemo pohraniti ključ 'Ritesh.' Pretpostavimo da je hash kod za ključ 2349873. Vrijednost indeksa bit će 1. Stoga će ovaj ključ biti pohranjen pod indeksom 1.

niz u cjelobrojnu java
Rad HashMapa u Javi

metodu get() u HashMapu

metoda get() koristi se za dobivanje vrijednosti po ključu. Neće dohvatiti vrijednost ako ne znate ključ. Kada se pozove metoda get(K Key), ona izračunava hash kod ključa.

Pretpostavimo da moramo donijeti ključ 'Aman'. Pozvat će se sljedeća metoda.

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

Generira hash kod kao 2657860. Sada izračunajte vrijednost indeksa 2657860 pomoću formule indeksa. Vrijednost indeksa bit će 4, kao što smo izračunali gore. metoda get() traži vrijednost indeksa 4. Uspoređuje prvi element Ključ s danim Ključem. Ako su oba ključa jednaka, tada vraća vrijednost else check za sljedeći element u čvoru ako postoji. U našem scenariju, nalazi se kao prvi element čvora i vraća vrijednost 19.

Idemo uzeti još jedan ključ 'Sunny'.

Hash kod ključa 'Sunny' je 63281940. Izračunata vrijednost indeksa 63281940 je 4, kao što smo izračunali za put() metodu. Idite na indeks 4 niza i usporedite ključ prvog elementa s danim ključem. Također uspoređuje Keys. U našem scenariju, dati ključ je drugi element, a sljedeći čvor je null. Uspoređuje drugi element Key s navedenim Keyom i vraća vrijednost 29. Vraća null ako je sljedeći čvor null.