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);
         }
        }

  • 相关阅读:
    ORACLE 循环
    C#生成指定数目的互不相同的随机数(转)
    Oracle自治事务的介绍
    螺旋矩阵--我的实现方法
    一个体育生的编程之路(一)
    判断十二星座——我的算法,大家看是不是比较简便
    简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
    使用VC和DirectShow从摄像头中读取图像(一)
    1999那个追着打我的女生
    我自己写的几个C++常用方法
  • 原文地址:https://www.cnblogs.com/flashicp/p/677338.html
Copyright © 2011-2022 走看看