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.
Prieš suprasdami vidinį HashMap veikimą, turite žinoti hashCode() ir equals() metodus.
kat timpf svoris
Į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.
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
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.
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.