Mis on Hashmap?

Arvutiteaduses on räsikaart või räsitabel andmete struktureerimise vorm nii, et iga andmeosa on seotud kordumatu identifitseerimisnumbri või sümboliga. See võimaldab hõlpsat otsingut, eriti suurest tuhandeid kirjeid sisaldavast andmebaasist. Räsikaart ei ole programmi konkreetne osa, vaid viitab pigem andmekorralduse vormile, mis määrab igale üksusele ehk võtmele andmebaasis selle üksuse tähistava väärtuse. Räsifunktsioon on programmi osa, mis seob võtmed nende väärtustega.

Telefoniraamatud on räsikaardi suurepärane näide. Telefoniraamatu paigutus esindab räsiplaani struktuuri. See keskendub erinevate väärtuste sidumisele ja ainult ühe väärtuse sidumisele ühe teise vastava termini või telefoninumbriga. Telefoniraamatus olevad nimed on klahvid ja telefoninumbrid on nendega seotud väärtused. Igale raamatus olevale inimesele on määratud erinev number ja kahte ühesugust pole.

Postkontori kastid toimivad ka hashmapi metafoorina. Igal inimesel on ühe kasti võti. Kasti mahub mitu teavet – arveid, kirju, postkaarte –, mis kõik on mõeldud inimesele, kellel on kasti võti. Kui õige võti sisestatakse õigesse kasti või sobitatakse sellega, avaneb see, et paljastada selle sisu.

Täiuslikult töötavad räsikaardid seoksid ühe võtme arvutiandmebaasis ühe mälukastiga. Kahjuks võib tekkida räsipõrge, kus kaks võtit lähevad samasse kasti. See juhtub siis, kui sisestatakse suur hulk andmeid ja selle kõige mahutamiseks pole piisavalt “kaste”.

Erinevalt telefoniraamatust või postkastist sisaldavad räsikaardid lisaks võtmele ja sellele vastavale väärtusele või kastile ka kolmandat elementi. See sisaldab ka räsifunktsiooni. Inimene teab, milline postkast on tema oma, aga arvutile tuleb öelda, milline võti millise kasti juurde läheb. Räsifunktsioon vaatab võtit, tõlgib selle numbrite või koodide jadaks ja seob selle vastavat koodi sisaldava kastiga. Võtme nimi, näiteks “Maarja”, on seal ainult selleks, et inimestel oleks seda lihtsam tõlgendada, samas kui tegelik kood on arvujada, mis on mõeldud arvutile lugemiseks.