1

何度も読みましたが、明確にしたかっただけです。

HashMap は Arraylists の配列と呼ばれます。

配列サイズはハッシュマップのバケットサイズだと言えますか

注: 1 つだけ訂正します。

1) バケットの数は配列サイズに相当します。 2) バケット サイズは Arraylist のサイズです。

ご不便をおかけして申し訳ありません。上記2点でよろしければ教えてください。

4

3 に答える 3

4

いいえ。あなたの例えでは、各バケットは1つArrayListであるため、バケットサイズはArrayListsのサイズになります。優れた実装では、それらすべてをほぼ同じサイズに保ち、かなり小さくするように努めます。

于 2012-05-01T11:34:09.670 に答える
0

バケットの数は配列の長さです。各バケットはArrayListであるため、バケットサイズ(バケットごとに異なる場合があります)は、そのArrayListの長さになります。そのサイズが複数になる唯一の理由は、HashMapに追加された2つのオブジェクトに対して計算されたハッシュコードが衝突する場合です(nb、これはおそらくによって返される値と同じではありませんがhashCode()、の容量に関連して生成されます/マップ内のバケットの数)。

于 2012-05-01T11:36:48.407 に答える
0

実際、それよりも複雑です。たとえば、JavaHashMapはリンクリストの配列として実装されます。そして、そのモデルでは、固定バケットサイズはまったくありません。

文献を読むと、さまざまな特性を持つハッシュテーブルを編成するさまざまな方法があることがわかります。ハッシュテーブルに関するウィキペディアのページは、読み始めるのに適した場所です。

于 2012-05-01T12:05:20.533 に答える