私はハッシングに混乱しています:HashTable/HashMapは配列ですか?
私はHashtable/HashMap(key、value)を使うとき、最初に私は内部データ構造が(メモリに既に割り当てられている)配列であると理解しました。
Javaのhashcode()メソッドはint型の戻り値を持っているので、このハッシュ値は配列のインデックスとして使用され、この場合、配列には2つの32のエントリが必要です実際に何が起こるかではない。
Javaはhashcode()からインデックスを作成するので、範囲が狭いですか?
回答:
人は、ドキュメントの下から指摘したように:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/HashMap.java
HashMapのアレイです。 hashcode()は再びハッシュされますが、整数であり、配列内のインデックスは次のようになります:h &(length-1);配列の長さが2^nならば、インデックスは再ハッシュ値から最初のnビットを取ると思います。
標準Java APIには「HashTable」タイプはありません。あなたは 'ハッシュテーブル'を意味しましたか? –
@LewBlochはいHashtable –
"javaのhashcode()メソッドはint型の戻り値を持っているので、理論的にはRAMの配列のためにすでに2つのPower 32(つまり4ギガのエントリ)を予約しておく必要があります" - 私はあなたの推論を見ないここに。 –