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>
。