2012-01-08 6 views
2

値やフィールドのリストをループしているときに、別の値を使用しています。ハッシュテーブルを使用する別の値

Dictionary<string, int> _ddistinctValues = new Dictionary<string, int>(); 

foreach(string _word in _words) { 
if(!_ddistinctValues.ContainsKey(_word)) { 
    _ddistinctValues.Add(_word, 1); 
} 
} 

スペースを節約するために「1」の整数値を保存せずにこれを行うには良い方法はありますか?私はハッシュテーブルを使用して別個の値をより速く取得しています。たぶん値を使わずにwordnameをハッシュしているかもしれません。これを行うことができるクラスがC#にありますか?

大きな問題ではありません。ただ疑問に思う。

ありがとうございました。

答えて

5

LINQを使用して、Distinct()を呼び出してください。結果を別のリストにスローすることもできます。

var distinctWords = _words.Distinct().ToList(); 

これは内部的にあなたが興味があると思い収集されるであろうユニークさを決定するためにHashSet<T>を使用します。

+0

Distinct()がHashSetを利用していることを説明するリンクがある場合は、興味があります。 – Alan

+0

これは辞書/ハッシュテーブルの高速ですか?値なし? – iefpw

+0

@Alan:Reflectorを使って検証することができますが、それは本当に問題になるでしょうか?あなたはこれをどうやって効率的に行うのですか? –

1

をはい、HashSetのはあなたのためのクラスです。

1

あなたはHashSet<string>を探しています。

+0

これはHashtableの/辞書速い右ではありませんか?値なし? – iefpw

+0

はい。それが**ハッシュ**セットと呼ばれる理由です。それはO(1)です。 – SLaks

関連する問題