高效率比較大型清單以找出差異的方法
處理超大規模通用清單的差異比較時,Except
方法是最佳選擇。此方法效率遠高於文中提供的LINQ查詢(時間複雜度為O(N * M))。
使用 Except 方法
Except
方法傳回一個新列表,其中包含第一個列表中不存在於第二個列表中的元素。兩個列表都使用此方法,即可得到兩個新列表:
<code>var firstNotSecond = list1.Except(list2).ToList(); var secondNotFirst = list2.Except(list1).ToList();</code>
此方法的時間複雜度為 O(N M),顯著快於先前的方法。
合併結果
要判斷兩個清單是否完全相同,可以合併這兩個結果清單:
<code>return !firstNotSecond.Any() && !secondNotFirst.Any();</code>
關於重複元素的說明
與原始程式碼不同,Except
方法只報告清單中重複元素一次。例如,如果list1 包含[1, 2, 2, 2, 3],而list2 包含[1],則使用Except
方法,「list1 中但不在list2 中的元素」的結果將是[2, 3] ,而原始碼將報告[2, 2, 2, 3]。
以上是如何有效地比較大量清單以發現差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!