高效比较大型列表以查找差异的方法
处理超大规模通用列表的差异比较时,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中文网其他相关文章!