2017-09-28 1 views
1

Wie suche ich einen bestimmten Bucket in einer Hash-Lösung, um einen Schlüssel zu finden? Ich habe Probleme herauszufinden, ob mein Schlüssel bereits in einer bestimmten Bucket-Nummer ist. Ich verstehe nicht, wie man Buckets in einem Array liest.Java HashTable mit Bucket-Methode

Ich schreibe meine eigene Hash-Datenstruktur mit Buckets nicht Java's.

+1

Vielleicht müssen Sie mehr Details einfügen, z. B. ein Beispiel wäre hilfreich. –

+0

Verwenden Sie Java eingebaute Hash-Datenstrukturen? Dein eigenes? Normalerweise ist der i-te Eimer nur Array [i]. –

+0

Entschuldigung, ich sollte erwähnen, dass ich eine benutzerdefinierte Bucket Hashing Lösung schreibe – Psikik

Antwort

1

Sobald Sie den Bucket gefunden haben, auf dem das Objekt basierend auf dem Hashcode liegen soll, müssen Sie dann nach dem Objekt unter allen Objekten in demselben Bucket suchen. Jetzt haben alle diese Objekte den gleichen HashCode, weil sie alle im selben Bucket sind. Sie müssen also diese Objekte mit der eqals-Methode vergleichen, um zu sehen, ob das Objekt, nach dem Sie suchen, tatsächlich vorhanden ist.

Wie Sie diese Gruppe von Elementen verwalten, die alle denselben Bucket teilen, liegt bei Ihnen. Sie haben möglicherweise eine Liste oder ein Unterfeld oder eine Datenstruktur, die eine Sammlung von Objekten enthält.

In der Tat müssen Sie nicht unbedingt alle im selben Eimer halten. Es gibt Schemata, die als offenes Hashing bezeichnet werden, bei denen Elemente mit demselben Hash-Wert aus dem Ziel-Bucket "verschütten" und aufeinanderfolgende Buckets im oberen Array belegen.

Ohne Ihre genaue Datenstruktur zu kennen, kann ich nicht genauer sein. Aber im Grunde verwenden Sie hashCode, um Sie zum obersten Bucket zu bringen, und dann verwenden Sie equals, um das Objekt innerhalb der Gruppe von Objekten zu finden, die denselben Hashcode haben.