日期:2014-05-17  浏览次数:20703 次

这两种集合的算法,哪个速度快些?
第一种:
List<string> list1 = new List<string>(){"01","05","06","10","12","15","20","24","30"}
List<string> list2 = new List<string>(){....}
List<string> list3 = new List<string>(){....}
List<string> list4 = new List<string>(){....}
..
..
..
List<string> list_标准 = new List<string>(){"01","07","17","12","20"}

在前面的那些集合中,和“list_标准”利用Intersect方法进行交集,交集后的元素个数为2个的,则留下


第二种:
string s = "01 05 06 10 12 15 20 24 30";
string s1 = ...
string s2 = ...
..
..
List<string> list_标准 = new List<string>(){"01","07","17","12","20"}
在前面的那些字符串中,和“list_标准”利用Contains方法进行判断,包含个数为2个的,则留下





问题:
如果集合个数很多的话,上面两种方法,哪个方法的计算速度快一些呢?

------解决方案--------------------
个人觉得第一种方法快
------解决方案--------------------
楼主可以自己加个程序运行时间测试下
集合个数小于1000时,数组最快
集合个数越多,泛型执行越快

以上仅代表个人观点
------解决方案--------------------
应该第一种快。

实际操作里我认为groupjoin应该比这两种更快,那东西很明显是hash的,你第一个方式基本和groupjoin类似唯一的区别就是不是hash保持滴
------解决方案--------------------
List是o(n)的顺序查找
不知道.net的string.Contains选用了什么算法,但不会小于o(n)
------解决方案--------------------
泛型的 第一种快
------解决方案--------------------
数据量少应该都差不多。多数据的第一种要快