积极答复者
两个数据量上20W的集合(LIST<String>),做比较,如何提高效率?

问题
-
A 集合与 B 集合都是有上几十W的数据,如果现在要判断 A 集合里面的数据在包含哪些 B 中的数据。如果直接做双 FOR 的循环通过 IndexOf 方式查半小时也查不出来。有什么别好的集合或者别的方式可供大数据量使用?不是比较两个集合的元素有那些是否相等,而是比较是否是否A中的元素有哪些是包含了B中的元素的。
Sherrys- 已移动 Sheng Jiang 蒋晟Moderator 2009年3月25日 20:30 .Net基础类库问题 (从 Visual C# 移动到 .NET Framework 一般性问题讨论区)
答案
-
如果都是字符串 或者唯一的key 都是字符串 就比较好比较了
可以把数据量比较大的一个 生成前缀树 然后进行比较
http://cnblogs.com/Diryboy/archive/2009/03/18/csharptrie.html
热烈庆祝进入4星活跃用户队伍
有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。- 已标记为答案 韦恩卑鄙 waywaModerator 2009年5月12日 2:47
-
建立树的时候 每个节点保存一个 list<int> 保存在初始数组中match的index 就可以了
list<int>count >1 就是有match
很多变通的办法
热烈庆祝进入4星活跃用户队伍
有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。- 已标记为答案 韦恩卑鄙 waywaModerator 2009年5月12日 2:47
-
因为要在A中查是否包含B,得先给A做索引,然后查起来才快。
如果是多CPU的话,可以把B分块,多线程查找。
好好学习,天天向上。- 已标记为答案 韦恩卑鄙 waywaModerator 2009年5月12日 2:46
全部回复
-
如果都是字符串 或者唯一的key 都是字符串 就比较好比较了
可以把数据量比较大的一个 生成前缀树 然后进行比较
http://cnblogs.com/Diryboy/archive/2009/03/18/csharptrie.html
热烈庆祝进入4星活跃用户队伍
有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。- 已标记为答案 韦恩卑鄙 waywaModerator 2009年5月12日 2:47
-
建立树的时候 每个节点保存一个 list<int> 保存在初始数组中match的index 就可以了
list<int>count >1 就是有match
很多变通的办法
热烈庆祝进入4星活跃用户队伍
有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。- 已标记为答案 韦恩卑鄙 waywaModerator 2009年5月12日 2:47
-
-
-
因为要在A中查是否包含B,得先给A做索引,然后查起来才快。
如果是多CPU的话,可以把B分块,多线程查找。
好好学习,天天向上。- 已标记为答案 韦恩卑鄙 waywaModerator 2009年5月12日 2:46