バックグラウンド
クラスでは、線形連鎖ハッシュテーブルを作成しました。リンクリストの配列を格納し、getまたはputが呼び出されるたびに、キーがハッシュされ、配列サイズによってモジュロされます。次に、getまたはputが、結果のリンクリスト(これも実装しました)で呼び出されます。
ST
(シンボルテーブル)インターフェースがあります。によく似てMap
いますが、必要な操作のいくつかはMap
、私が実装するには混乱しすぎていました。このインターフェイスの実装には、リンクリスト、赤黒木、線形プローブハッシュテーブル、および線形チェーンハッシュテーブルの実装があります。
任意のデリゲートシンボルテーブルタイプを受け入れる線形チェーンハッシュテーブルに似たものを作りたいと思います。たとえば、赤黒木タイプで初期化すると、赤黒木のテーブルが作成され、get関数とput関数はそれらの赤黒木に委任されます。
私の実装は、ライブラリが提供するものよりもほぼ確実に遅いこと、そして実際のコードでそれらを使用する方がよいことを認識しています。私はただ実験して学ぼうとしています。
質問
ハッシュテーブルがそのタイプのテーブルで構成され、呼び出しがそれらのシンボルテーブルに委任されるように、ハッシュテーブルにタイプを提供するための最良の方法は何ですか?
ジェネリックスを初期化できないため、ジェネリックスを使用できません。また、構築時とサイズ変更時に初期化する必要があります。
開始したいタイプの空白のシンボルテーブルを用意して、そのcopy
メソッドを使用することを考えましたが、もっと良い方法があるはずです。ある?