-1

在这个主题快速 count() 两个字符串数组的交集中Some1.Kill.The.DJ解释了一种非常快速的方法来计算两个字符串数组的交集。

这是 :

HashSet<string> arr2Set = new HashSet<string>(arr2);
arr1.Where(x=>arr2Set.Contains(x)).Count();

同样的事情,Union 怎么样?

4

1 回答 1

2

老实说,这种方法不应该比原来的方法快,因为它本质上在幕后做同样的事情。

(编辑:在包含重复项目的情况下甚至不正确!它也不总是更快:我在短数组上尝试过,但在更长的数组上尝试过,但不是。)arr1arr2

一个平行的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();

如果您担心性能,请先阅读此内容。通过尝试这个版本并为这两个版本计时,你最终可能会得到更快的原始版本——我当然做到了。

于 2012-12-18T08:40:07.327 回答