繰り返されるアイテムのいくつかの方法
最も簡単で簡単な - 読み取りソリューションの1つは、LINQ(言語統合)を使用することです。この機能は.NET 3で導入されており、データをクエリして伝達するステートメント方法を提供します。以下は、linq:の例です
リストの繰り返し要素をフィルタリングし、一意の要素のみを含む新しいリスト
を返します。<code class="language-csharp">List<T> withDupes = LoadSomeData(); List<T> noDupes = withDupes.Distinct().ToList();</code>
をDistinct()
に変換します。 withDupes
noDupes
既にLINQ式を使用している場合、この方法は非常に便利です。 ToList()
IEnumerable
List
別の選択肢は、ハッシュセットを使用することです。これは、高速検索と効率的な反復検出のために設計されたコレクションタイプです。以下は、この操作を実行できる方法です。
最初は空です。各プロジェクトをで横断し、コレクションに追加しようとしました。ハッシュセットは繰り返されることは許可されていないため、唯一のプロジェクトのみを正常に追加できます。最後に、生成されたコレクションはを使用してリストに戻ります。 この方法では、挿入および検索操作にO(n)パフォーマンスを提供します。
<code class="language-csharp">HashSet<T> hashSet = new HashSet<T>(); foreach (var item in withDupes) { hashSet.Add(item); } List<T> noDupes = new List<T>(hashSet);</code>
3番目の方法には、一意の要素を追跡するための辞書の使用が含まれます。
HashSet hashSet
一意の要素のための一時的なストレージ。各アイテムが辞書に存在するかどうかを確認するためにリストを横断しました。そうでない場合は、辞書とwithDupes
リストに追加します。 noDupes
適切な方法を選択
を選択します 重複したアイテムを削除する最良の方法は、特定の要件に依存します。コードライブラリでLINQを使用した場合、LINQは簡単なソリューションを提供します。 Hashsetは効率的な検索と挿入性能を提供し、大規模なコレクションに適しています。ただし、要素の元の順序は保持されません。最後に、辞書方法により、各一意の要素に関連する追加情報を追跡できますが、辞書データ構造の作成によりいくつかの費用が生成されます。
以上がC#リストから複製を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。