C# でオブジェクトの一意のリストを構築するために、あるパターンに従う方が速いかどうか疑問に思っています。
オプション1
- すべての項目を汎用リストに追加します
- その上でlist.Distinct関数を呼び出します
オプション 2
- 各アイテムを反復する
- アイテムがリストに既に存在するかどうかを確認し、存在しない場合は追加します
C# でオブジェクトの一意のリストを構築するために、あるパターンに従う方が速いかどうか疑問に思っています。
オプション1
オプション 2
あなたが使用することができますHashSet<T>
:
HashSetクラスは、高性能のセット操作を提供します。セットは、重複する要素を含まず、要素の順序が特定されていないコレクションです。
IEqualityComparer<T>
コンストラクターを介してカスタムを提供できます。
これは、「木に釘を打ち込むのに靴とレンガのどちらを使用すべきか」という質問の 1 つです。「オブジェクトの一意のリストを構築する」という要件に基づいて、HashSet<T>
クラスが満たすジョブに適切なデータ構造を使用する必要があります。
リスト形式のアイテムが必要な場合は、いつでもToList()
セットを呼び出すことができます。
ユニークなアイテムを検索するパフォーマンスが心配な場合は、を使用してDictionary<TKey, TVale>
ください。また、辞書には一意のキーが必要なため、重複することはありません。