2017-09-28 9 views
1

ハッシュ解法で特定のバケットを検索してキーを見つけるにはどうすればよいですか?キーが既にバケット番号に入っているかどうかを調べる方法がわかりません。私はバケットを配列で読み取る方法を理解していません。バケットメソッドを使用したJava HashTable

私は自分のハッシュデータ構造をJavaのものではなくバケットを使って書いています。

+1

多分詳細を入力する必要があります。たとえば、参考になる例があります。 –

+0

Javaの組み込みハッシュデータ構造を使用していますか?あなた自身の?通常、i番目のバケットは配列[i]です。 –

+0

申し訳ありませんが、私はカスタムバケットハッシングソリューションを書いています。 – Psikik

答えて

1

ハッシュコードに基づいて項目が存在するバケットを見つけたら、同じバケット内のすべてのオブジェクトの中から該当する項目を検索する必要があります。これらのオブジェクトはすべて同じバケットにあるので、これらのオブジェクトはすべて同じhashCodeを持ちます。実際にこれらのオブジェクトを.equalsメソッドと比較して、実際に探している項目があるかどうかを確認する必要があります。

同じバケットを共有するアイテムのグループをどのように管理するかはあなた次第です。リスト、サブ配列、またはオブジェクトの集合を保持するデータ構造を持つことができます。

実際、必ずしもすべてを同じバケットに保持する必要はありません。同じハッシュを持つアイテムがターゲットバケツから流出し、一番上の配列の連続するバケットを占めるオープンハッシュと呼ばれるスキームがあります。

正確なデータ構造がわからないと、私はより具体的にすることはできません。しかし、基本的にhashCodeを使用してトップのバケットに移動し、equalsを使用して、同じハッシュコードを持つオブジェクトのグループ内のオブジェクトを探します。

関連する問題