リストからすべての個別のアイテムを取得するための最速/最も効率的な方法は何ですか?
複数の繰り返しアイテムが含まれてList<string>
いる可能性があり、リスト内の一意の値のみが必要です。
を使用しHashSet<T>
ます。例えば:
var items = "A B A D A C".Split(' ');
var unique_items = new HashSet<string>(items);
foreach (string s in unique_items)
Console.WriteLine(s);
版画
あ B D ハ
LINQ からDistinct拡張メソッドを使用できます
.Net 2.0 では、このソリューションについてかなり確信があります。
public IEnumerable<T> Distinct<T>(IEnumerable<T> source)
{
List<T> uniques = new List<T>();
foreach (T item in source)
{
if (!uniques.Contains(item)) uniques.Add(item);
}
return uniques;
}
Distinct
LINQ の拡張メソッドとは別にHashSet<T>
、コレクションで初期化するオブジェクトを使用できます。GetHashCode
これは) ではなくハッシュ コード ( ) を使用するため、おそらく LINQ の方法よりも効率的ですIEqualityComparer
。
実際、状況に適している場合HashSet
は、最初にアイテムを保管するために a を使用します。