ホームページ > バックエンド開発 > C++ > C# で 2 つの巨大なリストの相違点を効率的に比較するにはどうすればよいですか?

C# で 2 つの巨大なリストの相違点を効率的に比較するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-14 21:16:46
オリジナル
799 人が閲覧しました

How Can I Efficiently Compare Two Massive Lists for Differences in C#?

大きなリスト内の差異を効率的に比較するための戦略

大規模なリストを操作する場合、相違点の比較は非常にリソースを消費する可能性があります。 LINQ の Contains() メソッドは一般的な方法ですが、大規模なデータ セットに対しては非効率的です。より良い解決策は、Except() メソッドを使用することです。

Except() メソッドを使用します

Except() メソッドは IEnumerable に対して動作し、あるリストには存在するが別のリストには存在しない要素を検索します。 Except() を両方のリストに適用すると、2 つの新しいリストが得られます:

  • firstNotSecond: 最初のリストにはあるが 2 番目のリストには欠けている要素が含まれています。
  • secondNotFirst: 最初のリストにはない 2 番目のリストの要素が含まれています。

この方法は、Contains() チェックを使用するよりもはるかに高速です。例:

<code class="language-csharp">var firstNotSecond = list1.Except(list2).ToList();
var secondNotFirst = list2.Except(list1).ToList();</code>
ログイン後にコピー

結果が統合されました

必要に応じて、結果を 1 つのステートメントに結合できます。

<code class="language-csharp">return !firstNotSecond.Any() && !secondNotFirst.Any();</code>
ログイン後にコピー

このステートメントは、2 つの入力リストにまったく同じ要素が含まれている場合は true と評価され、そうでない場合は false と評価されます。

繰り返し要素に関する注意事項

Except() メソッドは、繰り返される要素を Contains() メソッドとは異なる方法で処理することに注意してください。元のコードでは、2 番目のリストには存在しない最初のリストの重複要素が複数回報告されました。ただし、Except() は繰り返される各要素を 1 回だけ報告します。このソリューションを使用する場合は、この違いを考慮する必要があります。

以上がC# で 2 つの巨大なリストの相違点を効率的に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート