1. ホーム

[解決済み】HashMapのロードファクターの意味は何ですか?

2022-04-17 13:54:05

質問

HashMap には、2つの重要な特性があります。 sizeload factor . Java のドキュメントを調べてみると 0.75f は初期負荷率です。しかし、実際の使い方がわかりません。

どなたか、負荷率を設定する必要があるさまざまなシナリオと、さまざまなケースでの理想的な値の例について説明していただけませんか?

どのように解決するのですか?

その ドキュメント は、かなりよく説明しています。

<ブロッククオート

HashMapのインスタンスは、初期容量と負荷率という性能に影響を与える2つのパラメータを持っています。容量とはハッシュテーブルのバケット数で、初期容量とは単にハッシュテーブルが作成されたときの容量のことです。ロードファクターは、ハッシュテーブルがどの程度一杯になると自動的に容量が増加するかを示す指標である。ハッシュテーブルのエントリ数が負荷率と現在の容量の積を超えると、ハッシュテーブルはリハッシュされ(つまり、内部データ構造が再構築され)、バケット数がおよそ2倍になる。

一般的なルールとして、デフォルトのロードファクター(.75)は、時間とスペースのコストの間の良いトレードオフを提供します。値を大きくすると、スペース・オーバーヘッドは減少しますが、ルックアップ・コストが増加します(get や put を含む HashMap クラスのほとんどの操作に反映されます)。マップの初期容量を設定する際には、リハッシュ操作の回数を最小にするために、予想されるエントリの数と負荷率を考慮する必要があります。初期容量が最大エントリ数を負荷率で割った値よりも大きい場合、リハッシュ操作は発生しません。

すべての性能最適化と同様に、時期尚早に(つまり、ボトルネックがどこにあるのかについての確かなデータがないままに)最適化を行うことは避けるのが得策です。