多くの状況で、簡単にするために、辞書またはLINQと組み合わせてListまたはHashSetを使用することをお勧めします。しかし、私はDictionaryがそのハッシュテーブルの実装のためにもっとパフォーマンスが良いと思っていたので、私は通常Dictionaryを使用しました。例えばLINQのパフォーマンス対辞書<K,V>
:
私はLINQでこれを行う:
bool exists = hashset.Any(item => item.Key == someKey);
私は辞書では、次の同等と比較して有意なパフォーマンスを失うのですか?
bool exists = dictionary.ContainsKey(someKey); // an O(1) operation
LINQクエリは、辞書に対して正当な選択肢となる何らかの方法で最適化されていますか?または、上記のAny()は、実行されるコレクションのタイプに関係なく、プレーンなO(n)操作ですか?
各アイテム(この場合はtrueを返す)に実行するデリゲートを渡していますので、辞書ルックアップは非常に高速です(いくつかの極端なケースを除いて) – Rob