Guten Abend,
ich habe eine Verständnisfrage zur Funktionsweise einer Hashfunktion.
Angenommen es muss eine eigene Hashtafel implementiert werden, die folgendes leisten muss:
-void put(int value) nimmt value in der Hashtafel auf,
-boolean contains (int value) prüft, ob value in der Hashtafel abgelegt ist,
-void remove (int value) löscht value aus der Hashtafel, falls value dort vorhanden ist,
-boolean isEmpty() prüft, ob die Hashtafel leer ist,
-int load() liefert die Anzahl der belegten Einträge im Feld der Hash-Tafel,
-int size() liefert die Größe des Feldes der Hashtafel,
-void rehash() verdoppelt das Feld der Hashtafel auf 2*size(). rehash() wird ausgeführt, wenn die Anzahl der belegten Elemente in einer Hashtafel mehr als 75% der verfügbaren Elemente des Feldes beträgt.
-Liste allKeys() liefert eine ungeordnete Liste aller in der Hashtafel abgelegten Werte.
Die Hashfunktion h(x) sei gegeben durch:
h(x)=x mod size()
Dabei soll eine Lineare Liste verwendet werden, falls der berechnete Key einer Hashfunktion doppelt vorkommt.
Wird der Key durch die Hashfunktion berechnet?
Das Array von Linearen Listen ist mit der Größe 7 initialisiert.
Nun meine Frage: Ich habe möchte nun 6 und 13 einfügen. Durch die Hashfunktion werden 6 und 13 in die gleiche Klasse eingeteilt, nämlich 6.
In der linearen Liste an der Position [5] gibt es nun 2 Elemente: 6 und 13.
Nun habe ich ja bei einer HashTable immer Key/Value-Paare. Da 6 und 13 aber den gleichen Key haben (6). Dann ist doch die Eindeutigkeit nicht mehr gegeben, oder sehe ich da etwas falsch (was sehr wahrscheinlich sein müsste).
ich habe eine Verständnisfrage zur Funktionsweise einer Hashfunktion.
Angenommen es muss eine eigene Hashtafel implementiert werden, die folgendes leisten muss:
-void put(int value) nimmt value in der Hashtafel auf,
-boolean contains (int value) prüft, ob value in der Hashtafel abgelegt ist,
-void remove (int value) löscht value aus der Hashtafel, falls value dort vorhanden ist,
-boolean isEmpty() prüft, ob die Hashtafel leer ist,
-int load() liefert die Anzahl der belegten Einträge im Feld der Hash-Tafel,
-int size() liefert die Größe des Feldes der Hashtafel,
-void rehash() verdoppelt das Feld der Hashtafel auf 2*size(). rehash() wird ausgeführt, wenn die Anzahl der belegten Elemente in einer Hashtafel mehr als 75% der verfügbaren Elemente des Feldes beträgt.
-Liste allKeys() liefert eine ungeordnete Liste aller in der Hashtafel abgelegten Werte.
Die Hashfunktion h(x) sei gegeben durch:
h(x)=x mod size()
Dabei soll eine Lineare Liste verwendet werden, falls der berechnete Key einer Hashfunktion doppelt vorkommt.
Wird der Key durch die Hashfunktion berechnet?
Das Array von Linearen Listen ist mit der Größe 7 initialisiert.
Nun meine Frage: Ich habe möchte nun 6 und 13 einfügen. Durch die Hashfunktion werden 6 und 13 in die gleiche Klasse eingeteilt, nämlich 6.
In der linearen Liste an der Position [5] gibt es nun 2 Elemente: 6 und 13.
Nun habe ich ja bei einer HashTable immer Key/Value-Paare. Da 6 und 13 aber den gleichen Key haben (6). Dann ist doch die Eindeutigkeit nicht mehr gegeben, oder sehe ich da etwas falsch (was sehr wahrscheinlich sein müsste).