2012-05-01 5 views
1

私は何度もそれを読んできました。HashMap実装の概念

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

は、我々はその配列のサイズは、ハッシュマップ

注バケットサイズであると言うことができます:私はちょうど1つの補正をしたい:

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

ご迷惑をおかけして申し訳ありません。上記の2つの点が正しいかどうか教えてください。

答えて

4

いいえ、類義語では、各バケットはArrayListとなるため、バケットサイズはArrayListのサイズになります。良い実装は、それらのすべてをおおよそ同じサイズに保ち、かなり小さくするよう努めます。

+1

HashMapのバケットは、ArrayListよりもLinkedListに似ていますが... –

0

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

0

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

文書を読んだ場合、さまざまな特徴を持つハッシュテーブルを整理するさまざまな方法があることがわかります。 Wikipedia page on hash tablesは読書を開始するのに適しています。