2009-03-09 10 views
4

静的な "コレクション"に約30個の文字列を保持したいと思います。私は、このリストに対して着信するWeb要求のパスを確認する必要があります。キーと値が同じ場合に辞書を使用しますか?

キーと値が同じ値を持つStringDictionaryを使用することを考えていました。しかし、私が本当に望んでいるのはキールックアップだけなので奇妙に思えるので、使用する価値を調べるのではなく、存在を確認することができます。

私は何も心配していませんか?

パット

+0

これはSetのためのものです。 –

+0

あなたはどのような言語について話していますか?あなたの質問にはあまり関係はありませんが、あなたは言語特有の語彙を使うようです。 –

+0

StringDictionaryは.NETですが、Javaにはないようです – Richard

答えて

9

あなたはどの言語を使用していますか?

.NETはHashset<>をサポートしています。

+0

私はC#\ .NET 3.5を使用しています。私はHashSetについて聞いたこともありませんでした。<>、ありがとう –

4

あなただけの代わりにセットを使用し、存在を確認するために、キーのルックアップが必要な場合。

4

これはセットが何であるかに関するコメントに同意しますが、バージョン3.5より前のバージョンでは.NETがにはありませんでした。セットタイプはです。あなたが簡単に得ることができる最も近いものは(組み込みのライブラリを使用し、独自のセットを書いていない)、値が無関係な辞書でした。

しかし、3.5より前の.NETでわずか30文字の文字列の場合、List<string>がチケットでない可能性があります。ハッシュセットはの大きな数字ののセットで実際にうまく動作しますが、の場合はの文字列を使用していることが分かりますが、単純なList<string>.Containsコールはかなり速くなります。 String.Equalsは、長さをチェックしてから各文字をチェックするので、不一致を非常に迅速に拒否することになります。

簡単に言えば、.NET 3.5を使用している場合はHashSet<string>、.NET 2.0または3.0を使用している場合はList<string>、.NET 1.1を使用している場合はArrayListを使用します。これにより、最も簡単な呼び出しコードが得られるはずであり、パフォーマンスは上手くいく可能性があります。それがボトルネックになっていると思われる場合は、プロファイラで証明してください。

関連する問題