在本主题Fast count() intersection of two string arrays中, Some1.Kill.The.DJ 解释了计算两个字符串数组交集的非常快速的方法。
这是:
HashSet<string> arr2Set = new HashSet<string>(arr2);
arr1.Where(x=>arr2Set.Contains(x)).Count();
同样的事情,联盟怎么样?
答案 0 :(得分:2)
老实说,这种方法不应该比原作方法快,因为它基本上在幕后做同样的事情。
(编辑:arr1
包含同样位于arr2
的重复项目时,它甚至不是正确!它也不总是更快:我在短时间内尝试过数组,它是,但尝试在较长的数组上,它不是。)
Union
的并行可能是
HashSet<string> arr2Set = new HashSet<string>(arr2);
int unionSize = arr2Set.Count + arr1.Where(x=>arr2Set.Add(x)).Count();
但它确实应该与做
没什么不同int unionSize = arr1.Union(arr2).Count();
如果您担心表现,read this first。通过尝试这个版本并对这两个版本进行计时,您最终可能会更快地使用原始版本 - 我确实做到了。