首页 新闻 赞助 找找看

如何高效地判断两个集合是否有交集

0
悬赏园豆:20 [已解决问题] 解决于 2011-05-18 16:13

现有两个List<int> 型集合A,B,B的数据量比A小的多,如何高效地判断A,B两个集合是否有交集

artwl的主页 artwl | 专家六级 | 园豆:16736
提问于:2011-05-18 13:23
< >
分享
最佳答案
0

var expectedList = list1.Except(list2); 有差集

var intersectedList = list1.Intersect(list2);交集

收获园豆:10
辛巴 | 小虾三级 |园豆:622 | 2011-05-18 14:54
其他回答(3)
0

有高效的吗?  循环 数量小的。

var A = Enumerable.Range(1, 100).ToList();
var B
= Enumerable.Range(1, 5).ToList();

bool ab = B.Any(a => A.Contains(a));
待高手!

收获园豆:5
心火 | 园豆:375 (菜鸟二级) | 2011-05-18 13:49
0

List<int> a = new List<int>();
List
<int> b = new List<int>();

Random r1
= new Random(), r2 = new Random();
for (int i = 0; i < 100; i++)
{
a.Add(r1.Next(
0, 5000));
if (i < 50)
b.Add(r2.Next(
0, 5000));
}

a.AddRange(b);
a.Sort();
bool isHas = false;
for (int i = 0; i < a.Count - 1; i++)
{
if (a[i] == a[i + 1])
{
isHas
= true;
break;
}
}

Console.WriteLine(
string.Format("有无重复:{0}", isHas));
Console.ReadLine();
随便写的也不知道效率怎么样···

坐等大牛

收获园豆:5
写代码的小2B | 园豆:4371 (老鸟四级) | 2011-05-18 13:58
0

原生的retainAll方法

Klaus.Fenng | 园豆:199 (初学一级) | 2016-05-19 11:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册