Mikä on Hashmap?

Tietotekniikassa hashmap- tai hash -taulukko on muotoiltu data siten, että jokainen tieto on linkitetty yksilölliseen tunnistenumeroon tai symboliin. Tämä mahdollistaa helpon haun etenkin suuresta tietokannasta, joka sisältää tuhansia merkintöjä. Hashmap ei ole erityinen osa ohjelmaa, vaan viittaa tietomuotoiseen organisaatioon, joka määrittää jokaisen avaimena tunnetun kohteen tietokannassa arvolle, joka tarkoittaa kyseistä kohdetta. Hajautusfunktio on osa ohjelmaa, joka yhdistää avaimet arvoihinsa.

Puhelinluettelot ovat erinomainen esimerkki hashmapista. Puhelinmuistion asettelu edustaa hashmap -rakennetta. Se keskittyy eri arvojen yhdistämiseen ja vain yhden arvon yhdistämiseen toiseen vastaavaan termiin tai puhelinnumeroon. Puhelinluettelon nimet ovat näppäimiä ja puhelinnumerot ovat niihin liittyviä arvoja. Jokaiselle kirjassa olevalle henkilölle on annettu eri numero, eikä kahta samanlaista ole.

Postilaatikot toimivat myös vertauskuvana hashmapille. Jokaisella ihmisellä on avain yhteen laatikkoon. Laatikkoon mahtuu useita tietoja – laskut, kirjeet, postikortit – kaikki, jotka on tarkoitettu henkilölle, jolla on laatikon avain. Kun oikea avain asetetaan oikeaan laatikkoon tai sovitetaan oikeaan laatikkoon, se avautuu ja paljastaa sen sisällön.

Täydellisesti toimivat hashmapsit yhdistäisivät yhden avaimen yhteen tietokannan muistilaatikkoon. Valitettavasti voi esiintyä hash -törmäyksenä tunnettu tekijä, jossa kaksi avainta siirtyvät samaan laatikkoon. Tämä tapahtuu, kun syötetään suuri määrä dataa ja “laatikot” eivät riitä kaiken vastaanottamiseen.

Toisin kuin puhelinluettelo tai postilaatikko, hashmaps sisältää kolmannen elementin avaimen ja sitä vastaavan arvon tai laatikon lisäksi. Se sisältää myös hajautustoiminnon. Henkilö tietää, mikä postilaatikko on hänen, mutta tietokoneelle on kerrottava, mikä avain mihin laatikkoon menee. Hash -toiminto tarkastelee avainta, muuntaa sen numerosarjaksi tai koodiksi ja linkittää sen laatikkoon, joka sisältää vastaavan koodin. Avaimen nimi, kuten “Mary”, on vain siellä, joten ihmisten on helpompi tulkita, kun taas todellinen koodi on tietokoneelle tarkoitettu numerojono.