Š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.
Prije razumijevanja internog rada HashMap-a, morate biti svjesni metoda hashCode() i equals().
pande i numpy
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.
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.
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
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.