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

  • 相关阅读:
    js简单的双向绑定
    angular的$scope
    angular一些冷门的用法
    堆栈
    angular一些有启发的博客
    160830、如何运用最新的技术提升网页速度和性能
    160829、Java加解密与数字签名
    160826、浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘
    160825、互联网架构,如何进行容量设计?
    160824、ionic添加地图站点
  • 原文地址:https://www.cnblogs.com/flashicp/p/677338.html
Copyright © 2011-2022 走看看