ダブルハッシュを使用する Hashtable を実装しています。ただし、insert(element) メソッドに問題があります。現在、基本的に次のことを行っています。
- 配列内の計算された位置が空かどうかを確認します。もしそうなら、要素を挿入して終了です
- 位置が別の要素によってブロックされている場合、新しいハッシュ値を計算し、1 からやり直します (再帰)。
問題は、このアルゴリズムではハッシュテーブルがいっぱいになったことを検出できないことです。訪問した位置の数を追跡し、その数を配列のサイズと比較して、この問題を修正することができました。
ただし、これを行うためのより適切な方法はありますか。同様に、二重ハッシュの深さから、配列が(数学的に)いっぱいでなければならないと推測することは可能ですか?