2012-02-20 19 views
3

これは既に別の場所で尋ねられていますが、見つけられなかった場合は謝罪します。辞書はキーの有無を記録する最良の方法です

.NETに文字列を格納して、キーが格納されているかどうかを簡単かつ迅速に調べることができます。

リスト<文字列を使用して検索する必要があるたびにリストを列挙できますが、線形検索は非常に非効率的です。

私の次の考えは、辞書<の文字列、オブジェクト>を使用して、毎回クエリを実行して、うまくいけばクールな文字列ハッシングと高速な検索時間をもたらすはずです。しかし、私は実際に辞書の "オブジェクト"部分に何も格納していないので、そこに非効率性があるように思えます。

これを行うにはもっと良い方法はありますか?

+0

ハッシュしたい場合... – bzlm

+0

リストにはContainsメソッドがありますので、一致するものを列挙する必要はありません。 – kaj

+0

@KAJ「Contains」は内部的に何をするのでしょうか。 ;-) –

答えて

10

あなたはHashSet<string>を探していますが、これは辞書のO(1)性能は同じですが、厄介な値はありません。

0

辞書オブジェクトが複数のスレッドで使用されている場合は、ConcurrentDictionary(Of TKey、TValue)を使用することをお勧めします。

2

HashSet<string>(順序付けられていないセットの場合)または
SortedSet<string>(注文がある場合)。

関連する問題