1. ホーム
  2. c#

[解決済み】.NET HashTable Vs Dictionary - Dictionaryは同じくらい速くできるのか?

2022-04-16 07:46:49

質問

DictionaryとHashTableのどちらを使うべきか、そのタイミングと理由を考えています。 ここで少し検索してみたところ、Dictionaryの一般的な利点について話している人がいましたが、私はこれに完全に同意します。

しかし、Dictionaryはオブジェクトを挿入した順番に返すとは限らない、つまりソートされているということも読みました。 一方、HashTableはそうです。 私の理解では、これは状況によってはHashTableの方がはるかに速いということになります。

質問ですが、それはどのような状況なのでしょうか? 私が上記の仮定を誤っているだけなのでしょうか? どのような状況でどちらかを選択するのでしょうか?

解決方法は?

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

箱詰め・箱出しの問題はさておき、ほとんどの場合、両者は非常に似たパフォーマンスを持っているはずです。

両者の構造上の主な違いは Dictionary に依存しています。 連鎖 (ハッシュテーブルのバケットごとにアイテムのリストを保持する) が衝突を解決するのに対し Hashtable リハッシュ は、衝突解決(衝突が発生した場合、別のハッシュ関数でキーをバケットにマッピングすることを試みる)のために使用されます。

を使用するメリットはほとんどありません。 Hashtable クラスは、.NET Framework 2.0+をターゲットにしている場合。によって事実上時代遅れになっています。 Dictionary<TKey, TValue> .