6

hashmap の負荷係数のデフォルト値は 0.75f です。つまり、hasmap の容量の 75% が満たされると、ハッシュ マップが再ハッシュされます。たとえば、負荷係数の値を 1 より大きい値に設定すると、たとえば 2 (super(capacity+1, 2.0f, true);) とします。

sch ケースではどのように機能し、ここでハッシュはどのように機能しますか?

4

2 に答える 2

6

たとえば、負荷係数の値を 1 より大きい値に設定すると、たとえば 2 (super(capacity+1, 2.0f, true);) とします。

あなたはすでに答えを持っています。

...ハッシュマップの容量の200%が満たされると、ハッシュマップを再ハッシュします。

ハッシュは同じように機能しますが、パフォーマンスに影響を与える小さな容量を使用するだけです。初期容量を十分に大きくすると、負荷率が影響することはありません。負荷係数は、マップのサイズが変更された場合にのみ適用されます。

注: 実際の容量は常に 2 のべき乗です。

試してみることをお勧めします。

ところで、負荷係数を変更すると、バケットが少なくなるため、要素が表示される順序が変更される可能性があります。セットやマップを印刷して比較してみる。

于 2016-08-14T19:15:32.697 に答える
0

Java の HashMap はクローズド アドレス指定を使用するため、ハッシュ テーブル内の複数の要素がすべて同じ場所にハッシュされる場合、Java はそれらすべてを何らかの補助データ構造の同じバケットに入れるだけです。これにより、負荷率を任意に高くすることができます。これは、たとえば、負荷係数が 1 を超えることのない線形プローブ ハッシュ テーブルとは異なります。

于 2016-08-14T19:20:41.220 に答える