查找具有数百万个元素的两个列表或哈希集之间的公共元素的数量

时间:2013-03-28 19:56:13

标签: c#

在c#中,有哪些一些高效的方法可以确定两个列表或哈希集之间的公共元素的数量,这些列表或哈希集可能有数百万个值?

3 个答案:

答案 0 :(得分:7)

HashSets将提供最佳性能。您可以使用IntersectWith方法。

// assuming HashSet<T> hashSetA
//     and an IEnumerable<T> collectionB
hashSetA.IntersectWith(collectionB);

基于哈希集的解决方案提供的O(n)性能非常好。

接下来最好的方法是对两个列表进行排序,然后在两个列表中以锁定步骤线性迭代,选择公共元素,这样就可以获得O(nlogn)性能。

答案 1 :(得分:1)

HashSet IntersectWith

HashSet.IntersectWith Method

为了比较两个List我会创建更大的

的HashSet

HashSet Constructor (IEnumerable)

答案 2 :(得分:0)