2
整数をキーとしてHashMap
に追加すると、デフォルトのhashcode()が整数の値になり、ハッシュコードがEntryオブジェクトが配置されているテーブル配列のインデックスであるバケットに対応することがわかります。配列のサイズは1000ですか?HashMapのテーブル配列の実際のインデックスは何ですか?
整数をキーとしてHashMap
に追加すると、デフォルトのhashcode()が整数の値になり、ハッシュコードがEntryオブジェクトが配置されているテーブル配列のインデックスであるバケットに対応することがわかります。配列のサイズは1000ですか?HashMapのテーブル配列の実際のインデックスは何ですか?
いいえ、通常、ハッシュバケットの配列は小さく(現在の実装では16)始まり、テーブルのエントリ数が「ローディング係数」を超えて増加すると展開されます。各展開時に、配列のサイズは2倍になります。実際のハッシュテーブルインデックスはhashCode % numberOfBuckets
として計算されるため、ハッシュコード値は現在のテーブルサイズに収まるように「折りたたまれています」。
ノートを見に行くお勧め
可能であれば、必要なサイズをあらかじめ推測すること。