使用C#去掉10万级数组中重复的数据
2013-03-30 16:21
405 查看
最近做了个小程序,其中有个功能是去掉数组中的重复数据,开始没有考虑数组数量的问题,使用了一般的算法。但后面别人和我说5W条数据等了10分钟还没有成功,汗。。。
(刚才写这篇文章,浏览器突然自动刷新了,郁闷呀,写的一点都没有了,都没自动保存草稿,纠结)
后面用了别一种算法,基本上20S内可以完成了。
测试数据1万条
第一种算法(4分钟)
第二种算法(4S)
(刚才写这篇文章,浏览器突然自动刷新了,郁闷呀,写的一点都没有了,都没自动保存草稿,纠结)
后面用了别一种算法,基本上20S内可以完成了。
测试数据1万条
第一种算法(4分钟)
/// <summary> /// List泛型去重 /// </summary> /// <param name="list">由一维数组组成的泛型</param> /// <param name="ItemID">要去除重复的项</param> private void RemoveRepeaterUrl(ref List<string[]> list,int ItemID) { for (int i = 0; i < list.Count; i++) { for (int j = (i + 1); j < list.Count; j++) { if (list[j][ItemID] == list[i][ItemID]) { list.RemoveAt(j);//去除相同的项 i = 0;//从新开始去重,如果数组内有大量重复的项,仅一次去重不能解决问题。这样的用法会使效率慢1/3 j = 0; } } } }
第二种算法(4S)
//去除重复的数据, 返回list //利用类库中的hashtable类的containsKeys方法判断hashtable中是否存在这个数据,要是不存在就 //把数据添加到新的List中,最后清空hashtable public List<string> getUnque(List<string> list) { List<string> list1 = new List<string>(); Hashtable hash = new Hashtable(); foreach (string stu in list) { string[] kk1 = stu.Split(new string[] { "--" }, StringSplitOptions.RemoveEmptyEntries); string comword = kk1.Length==3 ? kk1[2]:""; if (!hash.ContainsKey(comword)) { hash.Add(comword, comword); list1.Add(stu); } } hash.Clear(); hash = null; return list1; }
相关文章推荐
- 使用C#去掉10万级数组中重复的数据
- java去掉数组中重复的数据和遍历数据
- C#去掉数组中重复的字符串
- java 数组去掉重复数据和排序
- C# List使用District去重复数据
- 两个数组比较,去掉重复的数据后生成第三个数组,这个怎么实现?
- c# 两个数组比较,将重复部分去掉,返回不重复部分的实现
- C#去掉数组中重复的字符串
- 使用js,判断数组中是否有重复数据
- 使用关联数组去掉重复那个的项!
- c# 如何中List<object>中去掉object对象中的重复列数据?
- 剔除数组中重复的数据(C#)
- 在pandas中,使用frame.drop_duplicates(['state'])去掉多属性数据中重复行
- 使用javascript去掉数组中重复元素的方法
- C#去掉list集合中的重复数据
- C#中去掉表中重复的数据
- 使用泛型去掉数组中的重复数字
- c# 两个数组比较,将重复部分去掉,返回不重复部分
- C#去掉数组中重复的字符串 .Distinct()
- msqlserver 千万级别单表数据去掉重复记录使用临时表