代码优化--数据字典(dictionary)的使用

<pre class="csharp" name="code"><span style="font-size:18px;"></span> 
 


       字典(dictionary)是一个集合,每一个元素都是一个键/值对,常用于查找和排序的列表,且查找速度非常快。此次代码优化过程中使用了数据字典,执行速度有了明显的提升。


【dictionary基本操作】


       1. 必须引用命名空间:System.Collection.Generic
       2. 数据字典定义:

<span style="font-size:18px;">     Dictionary<string, string> openWith = new Dictionary<string, string>();</span>

           3. 添加:

          openWith.Add("txt", "notepad.exe");

          openWith.Add("bmp", "paint.exe");

          openWith.Add("dib", "paint.exe");


      4. 遍历:

         (1)key或者value值

 

<span style="font-size:18px;">      foreach (string key in openWith.Keys)     { 
           string txt=key;       
      ...}</span>

             
                 (2)  遍历整个字典

         foreach (KeyValuePair<string, string> kvp in openWith)
     {
        ...

    }

     5. 删除元素

         openWith.Remove("doc");

         

     6. 根据key值获得对应的value值

         string value=openWith["doc"];

 

     7. 取出value或key值数组

          array arr=openWith.values  //直接取出value数组

          array arr=openwith.Keys     //直接取出key值数组

     

     8.搜索是否包含某key值或某value

          openWith.ContainsKey("doc")

          openWith.ContainsValue("1");  

     9. 数据字典清除

          openWith.clear

 

 【优势】

       1. 查询速度快,下图是从网上找到的对dictionary的执行速度总结:

         

          为什么执行速度快?

          官方解释:Dictionary 泛型类提供了从一组键到一组值的映射。字典中的每个添加项都由一个值及其相关联的键组成。通过键来检索值的速度是非常快的,接近于 O(1),这是因为 Dictionary 类是作为一个哈希表来实现的。

 

     2. 查询方式多样,可任意取出键值数组或者value数组,可见上面的基本操作8

 

     3. 结构严密,value值唯一,且不能为空

 

     4. dictionary VS List 

      查询:list是顺序存储,由于存储结构是顺序的,所以查询起来很费劲;字典是一组键到一组值的映射,每个值对应一个关联的键,所以搜索速度很快;

      删除:list顺序存储,当删除一个值时,需要移动后续元素;dictionary则像链表,删除时不需要移动后续元素。

【实战应用】

      此次项目的代码优化过程中就遇到这样一个问题:界面要求动态加载教职工姓名和各个评分项。这个界面需要查询3张表来实现:先根据评论人ID,从设置考评表查阅被评论人ID和设置考评ID,然后根据被评论人ID从教职工表查找被评论人姓名,从详细考评表查找评分项目。

      在提交评分的过程中保持这3张表的一致性就成了困难,这时,使用数据字典,在查询将被评论人ID,设置考评ID,评论人姓名进行绑定,问题就能得到很好的解决:

      1. 不用再重复查询

      2. 搜索速度得到提高

【总结】

       在实践中多接触一些新鲜血液,扩宽自己的知识面,并在实践中不断应用,在以后的编程道路上不断对比总结,总能收获很多。

 

 

              

 

评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值