zoukankan      html  css  js  c++  java
  • 关于Hashtable与ArrayList存储string的性能比较

    1、做从Title 表中删除TitleName时,想把对应Exam(Paper)表中的该Name,另存为另一个名字。
    因此,先从Title里提取出所有的TitleName,然后再并入Exam(Paper)表中的Name,最后需要排除所有相同的(两次提取可能有相同的,也有不同的)以及Title表删除的这个TitleName.本人使用ArrayList频率比较高一点,先采用了ArrayList.后发现他人如下所述:
    Hashtable与ArrayList存储object的性能比较,(对大数据量)
    先插入排序后删除,确实比一条一条判断是否存在后再插入快的多(近2个数量级的差别!数量越大差别越大)
    但是,最快的仍然是用Hashtable(其实这还是先判断是否存在后插入),比插入后排序高又近一个数量级(5倍以上速度)

    故用Hashtable替换了ArrayList.
    摘录如下:

    1.1  //使用Hashtable
        if(myDataSet!=null)
        {
         DataTable Dtab =myDataSet.Tables[0];

         int   Row=Dtab.Rows.Count;
         if(Row>0)
         {
          for(int i=0;i<Row;i++)  
          {
           string contents=Dtab.Rows[i][0].ToString();
           //去掉 重复的 和 原来的** 名称
           if(!ht.ContainsKey(contents))
           {
            if(contents!=this.oldTitleName)
            {
             ht.Add(contents,null);
            }
           }
          } 
         }
         else
         {
          MessageBox.Show(this,"***查询到0条记录。","提取数据",MessageBoxButtons.OK,MessageBoxIcon.Information);
         }
        }

    1.2  //使用ArrayList    
        if(!this.arrStrTitle.Contains(contents))
           {
            if(contents!=this.oldTitleName)
            {
             arrStrTitle.Add(contents);  
            }
           }
    2、循环ArrayList (或者Hashtable),将数据填加进ComboBox中

    2.1 //使用Hashtable

        if(this.ht!=null&&this.ht.Count>0)
        {
         System.Collections.IDictionaryEnumerator myEnumerator =this.ht.GetEnumerator();
         while (myEnumerator.MoveNext() )
         {
          string strTitleName=(string)myEnumerator.Key;
          this.cboTitleName.Items.Add(strTitleName);
         }
        }

     2.2 //使用ArrayList
    if(this.arrStrTitle!=null&&this.arrStrTitle.Count>0)
        {
         System.Collections.IEnumerator myEnumerator =this.arrStrTitle.GetEnumerator();
         while (myEnumerator.MoveNext() )
         {
          string strTitleName=(string)myEnumerator.Current;
          this.cboTitleName.Items.Add(strTitleName);
         }
        }

  • 相关阅读:
    Springboot构建问题集
    常用算法解析技巧总结
    Linux、Docker安装Nginx
    MySQL查询语句报错 sql_mode=only_full_group_by 问题
    MySQL按周统计 WEEK 实例
    IDEA注册码分享
    Mock测试接口
    Maven常用命令
    js中的for循环,循环次数会多出一次。当循环到最后一个的时候,循环还会继续,并且此时i就变成remove?
    vue .sync的理解
  • 原文地址:https://www.cnblogs.com/flashicp/p/677338.html
Copyright © 2011-2022 走看看