<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. 搜索速度得到提高
【总结】
在实践中多接触一些新鲜血液,扩宽自己的知识面,并在实践中不断应用,在以后的编程道路上不断对比总结,总能收获很多。