Hash-Maps, auch Hash-Tabellen genannt, sind Datenstrukturen, die Schlüssel auf sehr effiziente Weise mit Werten verknüpfen und so Einfügungs-, Such- und Löschvorgänge mit einer nahezu konstanten durchschnittlichen Zeitkomplexität von O(1) ermöglichen /p>
Die Funktionsweise von Hash-Maps basiert auf einer Hash-Funktion, die einen Eingabeschlüssel nimmt und ihn in einen numerischen Index umwandelt. Dieser Index bestimmt die Position in einem Array, an der der diesem Schlüssel zugeordnete Wert gespeichert wird. Idealerweise sollte eine Hash-Funktion alle Schlüssel im Array gleichmäßig verteilen, um sogenannte „Kollisionen“ zu vermeiden.
Funktions-Hash(Schlüssel) {
// Einfache Implementierung einer Hash-Funktion
sei Hash = 0;
for (let i = 0; i < key.length; i++) {
Hash += key.charCodeAt(i);
}
Rückgabe-Hash % arraySize;
}
Wenn zwei verschiedene Schlüssel denselben Index erzeugen, kommt es zu einer Kollision. Um diese Kollisionen zu bewältigen, gibt es hauptsächlich zwei Techniken:
Verkettung: Bei dieser Technik enthält jede Position im Array eine verknüpfte Liste aller Elemente, deren Schlüssel demselben Index zugeordnet sind. Tritt eine Kollision auf, wird das neue Element einfach zur entsprechenden verknüpften Liste hinzugefügt.
Offener Scan: Wenn beim offenen Scan der von der Hash-Funktion berechnete Index ausgelastet ist, probiert die Hash-Tabelle nacheinander die folgenden Indizes aus, bis sie einen freien Index findet, in dem sie das neue Element speichern kann. < /li>
Die Leistung von Hash-Maps hängt weitgehend von der Qualität der Hash-Funktion und der Art und Weise ab, wie Kollisionen gehandhabt werden. Eine gute Hash-Funktion und ein effizientes Kollisionsmanagement können die Leistung bei den meisten Vorgängen nahe bei O(1) halten. Hash-Maps sind aufgrund ihrer Effizienz in vielen Softwareanwendungen unverzichtbar, insbesondere in Szenarien, in denen ein schneller Zugriff auf Daten erforderlich ist, z. B. in Caching-Systemen, Datenbanken und großen Datensätzen.
Hash-Maps, auch Hash-Tabellen genannt, sind Datenstrukturen, die Schlüssel auf sehr effiziente Weise mit Werten verknüpfen und so Einfügungs-, Such- und Löschvorgänge mit einer nahezu konstanten durchschnittlichen Zeitkomplexität von O(1) ermöglichen /p>
Die Funktionsweise von Hash-Maps basiert auf einer Hash-Funktion, die einen Eingabeschlüssel nimmt und ihn in einen numerischen Index umwandelt. Dieser Index bestimmt die Position in einem Array, an der der diesem Schlüssel zugeordnete Wert gespeichert wird. Idealerweise sollte eine Hash-Funktion alle Schlüssel im Array gleichmäßig verteilen, um sogenannte „Kollisionen“ zu vermeiden.
Wenn zwei verschiedene Schlüssel denselben Index erzeugen, kommt es zu einer Kollision. Um diese Kollisionen zu bewältigen, gibt es hauptsächlich zwei Techniken:
Die Leistung von Hash-Maps hängt weitgehend von der Qualität der Hash-Funktion und der Art und Weise ab, wie Kollisionen gehandhabt werden. Eine gute Hash-Funktion und ein effizientes Kollisionsmanagement können die Leistung bei den meisten Vorgängen nahe bei O(1) halten. Hash-Maps sind aufgrund ihrer Effizienz in vielen Softwareanwendungen unverzichtbar, insbesondere in Szenarien, in denen ein schneller Zugriff auf Daten erforderlich ist, z. B. in Caching-Systemen, Datenbanken und großen Datensätzen.