logo

HashMap darbas Java


Kas yra Hashing

Tai objekto konvertavimo į sveikąjį skaičių procesas. Sveikasis skaičius padeda indeksuoti ir greičiau atlikti paiešką.

Kas yra HashMap

„HashMap“ yra „Java“ kolekcijos sistemos dalis. Jis naudoja techniką, vadinamą maišos apdorojimu. Tai įgyvendina žemėlapio sąsają. Jis saugo duomenis rakto ir vertės poroje. HashMap turi mazgų masyvą, o mazgas vaizduojamas kaip klasė. Raktui ir vertei saugoti viduje naudojamas masyvas ir „LinkedList“ duomenų struktūra. HashMap yra keturi laukai.

HashMap darbas Java

Prieš suprasdami vidinį HashMap veikimą, turite žinoti hashCode() ir equals() metodus.

kat timpf svoris
    lygu ():Jis patikrina dviejų objektų lygybę. Jis lygina raktą, nesvarbu, ar jie lygūs, ar ne. Tai yra Object klasės metodas. Tai gali būti nepaisoma. Jei nepaisysite lygybės() metodo, tai privaloma nepaisyti hashCode() metodo.maišos kodas ():Tai yra objektų klasės metodas. Jis grąžina objekto atminties nuorodą sveikojo skaičiaus forma. Vertė, gauta naudojant metodą, naudojama kaip segmento numeris. Grupės numeris yra elemento adresas žemėlapyje. Nulinio rakto maišos kodas yra 0.Kibirai:Mazgo masyvas vadinamas kaušeliais. Kiekvienas mazgas turi duomenų struktūrą, pvz., LinkedList. Daugiau nei vienas mazgas gali bendrinti tą patį segmentą. Gali būti skirtingos talpos.
HashMap darbas Java

Įterpkite raktą, verčių porą į HashMap

Mes naudojame metodą put(), norėdami įterpti rakto ir vertės porą į HashMap. Numatytasis HashMap dydis yra 16 (nuo 0 iki 15).

Pavyzdys

Šiame pavyzdyje norime įterpti tris (raktas, reikšmė) poras į HashMap.

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

Pažiūrėkime, kuriame indekse rakto, reikšmių pora bus įrašyta į HashMap. Kai iškviečiame put() metodą, jis apskaičiuoja rakto „Aman“ maišos kodą. Tarkime, kad „Aman“ maišos kodas yra 2657860. Norėdami išsaugoti raktą atmintyje, turime apskaičiuoti indeksą.

formatuoti datą Java

Indekso skaičiavimas

Indeksas sumažina masyvo dydį. Indekso apskaičiavimo formulė yra tokia:

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

Kur n yra masyvo dydis. Taigi „Aman“ indekso reikšmė yra:

 Index = 2657860 & (16-1) = 4 

4 reikšmė yra apskaičiuota indekso reikšmė, kurioje raktas ir reikšmė bus saugomi HashMap.

HashMap darbas Java

Hash susidūrimas

Taip yra, kai dviejų ar daugiau raktų apskaičiuota indekso reikšmė yra vienoda. Apskaičiuokime maišos kodą kitam raktui „Sunny“. Tarkime, kad 'Sunny' maišos kodas yra 63281940. Norėdami išsaugoti raktą atmintyje, turime apskaičiuoti indeksą naudodami indekso formulę.

 Index=63281940 & (16-1) = 4 

4 reikšmė yra apskaičiuota indekso reikšmė, kurioje raktas bus saugomas HashMap. Šiuo atveju, lygus() metodas patikrina, ar abu raktai yra vienodi, ar ne. Jei raktai yra vienodi, pakeiskite reikšmę dabartine reikšme. Kitu atveju prijunkite šį mazgo objektą su esamu mazgo objektu per LinkedList. Taigi abu raktai bus saugomi 4 indekse.

spausdinti iš java
HashMap darbas Java

Panašiai mes išsaugosime raktą „Ritesh“. Tarkime, kad rakto maišos kodas yra 2349873. Indekso reikšmė bus 1. Taigi šis raktas bus saugomas 1 indekse.

HashMap darbas Java

get() metodas „HashMap“.

Get() metodas naudojamas norint gauti vertę pagal raktą. Jis nepateiks vertės, jei nežinote rakto. Kai iškviečiamas get(K Key) metodas, jis apskaičiuoja rakto maišos kodą.

Tarkime, kad turime paimti raktą „Aman“. Bus vadinamas toks metodas.

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

Jis generuoja maišos kodą kaip 2657860. Dabar apskaičiuokite indekso reikšmę 2657860 naudodami indekso formulę. Indekso reikšmė bus 4, kaip apskaičiavome aukščiau. Get() metodas ieško indekso reikšmės 4. Jis palygina pirmąjį elementą Key su duotu raktu. Jei abu raktai yra vienodi, tada jis grąžina reikšmę else check the next element in the mazgas, jei toks yra. Mūsų scenarijuje jis randamas kaip pirmasis mazgo elementas ir grąžina reikšmę 19.

Paimkime kitą raktą „Sunny“.

Rakto 'Sunny' maišos kodas yra 63281940. Apskaičiuota indekso reikšmė 63281940 yra 4, kaip mes apskaičiavome put() metodui. Eikite į masyvo 4 indeksą ir palyginkite pirmojo elemento raktą su nurodytu raktu. Taip pat lygina raktus. Mūsų scenarijuje nurodytas raktas yra antrasis elementas, o kitas mazgas yra nulinis. Jis lygina antrąjį elementą Key su nurodytu raktu ir grąžina reikšmę 29. Grąžina nulį, jei kitas mazgas yra nulis.