hashmap の負荷係数のデフォルト値は 0.75f です。つまり、hasmap の容量の 75% が満たされると、ハッシュ マップが再ハッシュされます。たとえば、負荷係数の値を 1 より大きい値に設定すると、たとえば 2 (super(capacity+1, 2.0f, true);) とします。
sch ケースではどのように機能し、ここでハッシュはどのように機能しますか?
hashmap の負荷係数のデフォルト値は 0.75f です。つまり、hasmap の容量の 75% が満たされると、ハッシュ マップが再ハッシュされます。たとえば、負荷係数の値を 1 より大きい値に設定すると、たとえば 2 (super(capacity+1, 2.0f, true);) とします。
sch ケースではどのように機能し、ここでハッシュはどのように機能しますか?
たとえば、負荷係数の値を 1 より大きい値に設定すると、たとえば 2 (super(capacity+1, 2.0f, true);) とします。
あなたはすでに答えを持っています。
...ハッシュマップの容量の200%が満たされると、ハッシュマップを再ハッシュします。
ハッシュは同じように機能しますが、パフォーマンスに影響を与える小さな容量を使用するだけです。初期容量を十分に大きくすると、負荷率が影響することはありません。負荷係数は、マップのサイズが変更された場合にのみ適用されます。
注: 実際の容量は常に 2 のべき乗です。
試してみることをお勧めします。
ところで、負荷係数を変更すると、バケットが少なくなるため、要素が表示される順序が変更される可能性があります。セットやマップを印刷して比較してみる。
Java の HashMap はクローズド アドレス指定を使用するため、ハッシュ テーブル内の複数の要素がすべて同じ場所にハッシュされる場合、Java はそれらすべてを何らかの補助データ構造の同じバケットに入れるだけです。これにより、負荷率を任意に高くすることができます。これは、たとえば、負荷係数が 1 を超えることのない線形プローブ ハッシュ テーブルとは異なります。