zoukankan      html  css  js  c++  java
  • 使用C#去掉10万级数组中重复的数据


    最近做了个小程序,其中有个功能是去掉数组中的重复数据,开始没有考虑数组数量的问题,使用了一般的算法。但后面别人和我说5W条数据等了10分钟还没有成功,汗。。。

    (刚才写这篇文章,浏览器突然自动刷新了,郁闷呀,写的一点都没有了,都没自动保存草稿,纠结)

    后面用了别一种算法,基本上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;
            }


     

  • 相关阅读:
    SQL SERVER 2005分区表切换
    对SQL SERVER2005中表和索引存储结构的一些理解
    SQL SERVER 2005 DBCC IND命令说明
    面向对象的基本原则
    SQL SERVER 2005 DBCC PAGE命令说明
    Mac 使用ab性能测试工具
    Struts2初始化过程代码分析
    maven开发过程实践之二(配置项与源代码分离 processresources)
    简单之美
    Maven开发过程实践之三—(单元测试报告 test)
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/2990597.html
Copyright © 2011-2022 走看看