3

Java Hashtable の内部配列表現に到達するにはどうすればよいですか? ハッシュテーブルは巧妙に構成された配列であることを知っています。各キーのインデックスを使用して、Disjoint セットと並行して作業できるようにしたいと考えています。

次の 2 つのいずれかが必要です。

  1. キーをハッシュテーブルの内部配列のインデックスに変換するために使用されるハッシュ関数
  2. キーの対応するインデックス。
4

3 に答える 3

4

注 1: 90% のケースで、おそらく のHashMap代わりに クラス を使用する必要がありますHashtable

注 2: 実際、ほとんどのハッシュ テーブルは、ハッシュの衝突を処理するために、リストと配列を組み合わせます。

一般に、Java 実装に付属するクラスの内部に到達できるとは想定されていません。それは、インターフェイスと実装を明確に分離する機能を提供する Java の目的全体を無効にします。

代わりに、 Java 開発キットから実装MyHashMapのソース コードをコピーするなどして、新しいクラスを作成することをお勧めします。HashMap独自のコピーを持つことで、完全に制御でき、JRE の更新後に予期しない破損が発生することはありません。ここHashMapで OpenJDK の実装を見つけることができます。

PS:理論的には、リフレクションを使用して内部にアクセスすることもできますが、結果のコードはひどいものになり、パフォーマンスはさらに低下します...HashMap

于 2012-11-21T20:28:14.130 に答える
0

キーにインデックスをアルファベット順に割り当てるハッシュテーブルのようなクラスを作成します。HashMap などを拡張することは、おそらく必要ではありません。楽しいですよ。

于 2012-11-21T20:31:11.847 に答える
0

リフレクションを使用して任意のフィールドにアクセスできると思います.Hashtableの内部を見てください。

それとも単にコード サンプルを探していますか?

于 2012-11-21T20:28:30.480 に答える