.NET ハッシュテーブルと辞書 - 辞書は同じように高速化できますか? 質問する

.NET ハッシュテーブルと辞書 - 辞書は同じように高速化できますか? 質問する

Dictionaryまたは をいつ、なぜ使用するのかを解明しようとHashtableしています。ここで少し検索したところ、 の一般的な利点について話している人がいて、Dictionary私もそれに完全に同意します。これにより、ボックス化とボックス化解除の利点が生まれ、パフォーマンスがわずかに向上します。

Dictionaryしかし、私はまた、オブジェクトが挿入された順序で常に返されるわけではなく、ソートされているということも読みました。Hashtable私の理解では、これにより、Hashtable状況によってははるかに高速になります。

私の質問は、本当に、それらの状況とはどのようなものかということです。上記の私の仮定は間違っているのでしょうか? どちらか一方を他方よりも優先して選択する状況とはどのようなものでしょうか (そうです、最後のものは少し曖昧です)。

ベストアンサー1

System.Collections.Generic.Dictionary<TKey, TValue>両方のクラスSystem.Collections.Hashtableは内部的にハッシュ テーブル データ構造を維持します。いずれも項目の順序の保持を保証しません。

梱包/開梱の問題を別にすれば、ほとんどの場合、パフォーマンスは非常に似ているはずです。

それらの主な構造上の違いは、 は衝突を解決するために連鎖(ハッシュ テーブル バケットごとに項目のリストを維持)Dictionaryに依存するのに対し、 は衝突解決に再ハッシュ(衝突が発生すると、別のハッシュ関数を試してキーをバケットにマップする) を使用することです。Hashtable

.NET Framework 2.0 以降をターゲットにしている場合、クラスを使用する利点はほとんどありませんHashtable。 によって事実上廃止されていますDictionary<TKey, TValue>

おすすめ記事