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

本文关键字:元素 之间 哈希集 列表 百万个 包含数 查找 两个 | 更新日期: 2023-09-27 18:06:28

在c#中,确定两个列表或哈希集(可能有数百万个值)之间的公共元素数量的一些性能方法是什么?

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

使用HashSets可以获得最佳性能。你可以使用IntersectWith方法。

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

基于哈希集的解决方案提供了O(n)的性能,这几乎是最好的。

下一个最好的方法是对两个列表进行排序,然后在两个列表上进行锁步线性迭代,选择共同的元素,这将产生O(nlogn)的性能。

HashSet IntersectWith

HashSet。IntersectWith方法

对于比较两个List,我将创建较大的

的HashSet
HashSet Constructor (IEnumerable)

使用除了

两个列表的差异