Vad är en Hashmap?
Inom datavetenskap är en hashmap- eller hashtabell en form för att strukturera data så att varje databitar är kopplad till ett unikt identifikationsnummer eller symbol. Detta tillåter enkel hämtning, särskilt från en stor databas som innehåller tusentals poster. Hashmapen är inte en specifik del av programmet, utan avser snarare en form av dataorganisation som tilldelar varje objekt, känd som en nyckel, i databasen till ett värde som står för det objektet. Hashfunktionen är den del av programmet som länkar nycklar till deras värden.
Telefonböcker fungerar som ett utmärkt exempel på en hashmap. Hur telefonboken läggs fram representerar hashmap-strukturen. Den fokuserar på att länka olika värden tillsammans och bara koppla ett värde till en annan motsvarande term eller telefonnummer. Namnen i telefonboken är nycklarna och telefonnumren är de värden som är associerade med dem. Varje person i boken tilldelas ett annat nummer och inga två är lika.
Postkontor fungerar också som en metafor för hashmap. Varje person har en nyckel till en enda ruta. Rutan kan innehålla flera informationsdelar - räkningar, brev, vykort - allt avsett för den person som har nyckeln till rutan. När rätt nyckel sätts in eller matchas till rätt ruta öppnas den för att avslöja innehållet.
Perfekt fungerande hashmaps skulle länka en nyckel till en "ruta" i en datordatabas. Tyvärr kan en faktor som kallas hashkollision uppstå, där två nycklar går till samma ruta. Detta händer när en stor mängd data matas in och det inte finns tillräckligt med "rutor" för att rymma allt.
Till skillnad från en telefonbok eller en postbox, har hashappar ett tredje element förutom nyckeln och värdet eller rutan som det matchar. Det inkluderar också en hash-funktion. En person vet vilken postkontor som är hennes, men en dator måste få veta vilken nyckel som går till vilken låda. Hashfunktionen tittar på nyckeln, översätter den till en serie siffror eller kod och länkar den till rutan som innehåller motsvarande kod. Namnet på nyckeln, som "Mary", är bara där så det är lättare för människor att tolka, medan den faktiska koden är en sträng med siffror som är avsedda för datorn att läsa.