大きなリストを比較して相違点を見つける効率的な方法
Except
メソッドは、非常に大きな汎用リストの差分比較を扱う場合に最適です。この方法は、この記事で説明されている LINQ クエリよりもはるかに効率的です (時間計算量は O(N * M))。
Except メソッドを使用する
Except
メソッドは、最初のリストの要素のうち 2 番目のリストには存在しない要素を含む新しいリストを返します。両方のリストでこのメソッドを使用して、2 つの新しいリストを取得します:
<code>var firstNotSecond = list1.Except(list2).ToList(); var secondNotFirst = list2.Except(list1).ToList();</code>
この方法の時間計算量は O(N M) で、前の方法よりも大幅に高速です。
結果を結合
2 つのリストが同一かどうかを判断するには、2 つの結果リストをマージします。
<code>return !firstNotSecond.Any() && !secondNotFirst.Any();</code>
繰り返し要素に関する注意事項
元のコードとは異なり、Except
メソッドはリスト内の重複要素を 1 回だけ報告します。たとえば、list1 に [1, 2, 2, 2, 3] が含まれ、list2 に [1] が含まれる場合、Except
メソッドを使用すると、「list1 にはあるが list2 には含まれない要素」の結果は [2, 3] になります。 ] ですが、元のコードは [2, 2, 2, 3] を報告します。
以上が膨大なリストを効率的に比較して矛盾を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。