1

要素が削除されたときにc#のハッシュテーブルを縮小するロジック(ある場合)を探しています。

よろしくハリッシュ

4

3 に答える 3

4

c#ハッシュテーブルは縮小しません。彼らは成長するだけです。再ハッシュアルゴリズムの実行には非常にコストがかかるため、ロジックは重要です。ほとんどの場合、より小さなハッシュテーブルに再ハッシュすることによって節約されたスペースは、再ハッシュのコストによって完全にオーバーランされます。特に自動ベースでは、ハッシュテーブルからの削除が「最後の」削除ではない可能性があり(アルゴリズムベースでハッシュテーブル内から判断することは不可能)、潜在的な値は単に価値がありません。

ハッシュテーブルが大幅に縮小し、本当にスペースを再利用したい場合は、(適切なサイズの)新しいハッシュテーブルを作成し、そこに要素をコピーすることをお勧めします。

于 2008-11-19T19:48:00.203 に答える
1

余談ですが、.net2.0以降を使用しているので、おそらくDictionary<K,V>HashTableではなくを使用する必要があります。

于 2008-11-19T19:47:08.753 に答える
0

ドキュメント内のハッシュテーブルのサイズ変更の唯一の兆候は、負荷率を超えてハッシュテーブルのサイズが増加した場合です。急いで縮小することについての言及はありません。

MSDNには、負荷率の詳細がいくつかあります。

于 2008-11-19T19:42:42.617 に答える