在这个主题快速 count() 两个字符串数组的交集中,Some1.Kill.The.DJ解释了一种非常快速的方法来计算两个字符串数组的交集。
这是 :
HashSet<string> arr2Set = new HashSet<string>(arr2);
arr1.Where(x=>arr2Set.Contains(x)).Count();
同样的事情,Union 怎么样?
在这个主题快速 count() 两个字符串数组的交集中,Some1.Kill.The.DJ解释了一种非常快速的方法来计算两个字符串数组的交集。
这是 :
HashSet<string> arr2Set = new HashSet<string>(arr2);
arr1.Where(x=>arr2Set.Contains(x)).Count();
同样的事情,Union 怎么样?
老实说,这种方法不应该比原来的方法快,因为它本质上在幕后做同样的事情。
(编辑:在包含重复项目的情况下甚至不正确!它也不总是更快:我在短数组上尝试过,但在更长的数组上尝试过,但不是。)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();
如果您担心性能,请先阅读此内容。通过尝试这个版本并为这两个版本计时,你最终可能会得到更快的原始版本——我当然做到了。