Java Hashtable の内部配列表現に到達するにはどうすればよいですか? ハッシュテーブルは巧妙に構成された配列であることを知っています。各キーのインデックスを使用して、Disjoint セットと並行して作業できるようにしたいと考えています。
次の 2 つのいずれかが必要です。
- キーをハッシュテーブルの内部配列のインデックスに変換するために使用されるハッシュ関数
- キーの対応するインデックス。
Java Hashtable の内部配列表現に到達するにはどうすればよいですか? ハッシュテーブルは巧妙に構成された配列であることを知っています。各キーのインデックスを使用して、Disjoint セットと並行して作業できるようにしたいと考えています。
次の 2 つのいずれかが必要です。
注 1: 90% のケースで、おそらく のHashMap
代わりに クラス を使用する必要がありますHashtable
。
注 2: 実際、ほとんどのハッシュ テーブルは、ハッシュの衝突を処理するために、リストと配列を組み合わせます。
一般に、Java 実装に付属するクラスの内部に到達できるとは想定されていません。それは、インターフェイスと実装を明確に分離する機能を提供する Java の目的全体を無効にします。
代わりに、 Java 開発キットから実装MyHashMap
のソース コードをコピーするなどして、新しいクラスを作成することをお勧めします。HashMap
独自のコピーを持つことで、完全に制御でき、JRE の更新後に予期しない破損が発生することはありません。ここHashMap
で OpenJDK の実装を見つけることができます。
PS:理論的には、リフレクションを使用して内部にアクセスすることもできますが、結果のコードはひどいものになり、パフォーマンスはさらに低下します...HashMap
キーにインデックスをアルファベット順に割り当てるハッシュテーブルのようなクラスを作成します。HashMap などを拡張することは、おそらく必要ではありません。楽しいですよ。
リフレクションを使用して任意のフィールドにアクセスできると思います.Hashtableの内部を見てください。
それとも単にコード サンプルを探していますか?