Dictionary、KeyValuePair、Hashtable

微软官方

http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

字典集合的两种遍历

Dictionary<string, string> dictionary = new Dictionary<string,string>();

foreach (string dic in dictionary.Keys)
{
    //Key: dic
    //Value: dictionary[dic]
}
foreach (KeyValuePair<string, string> dic in dictionary
{
    //Key: dic.Key
    //Value: dic.Value 
}

KeyValuePair

http://www.cnblogs.com/Artemisblog/p/3706054.html

http://www.cnblogs.com/KTblog/p/4392248.html

HashTable

http://www.cnblogs.com/liuwenjun830/archive/2006/07/28/462182.html【推荐】

http://www.cnblogs.com/yangleiWPF/archive/2010/11/16/1878494.html

http://www.cnblogs.com/gjcn/archive/2008/07/07/1234560.html

 

 

 参考文章:

C#中Dictionary的用法【推荐】

http://jingyan.baidu.com/article/9989c7460ab872f648ecfeed.html

 

C#中键值对类型Hashtable与Dictionary比较和相关用法

http://www.2cto.com/kf/201304/201715.html

Hashtable与Dictionary虽然都是作为键值对的载体,但是采用的是不同的数据结构。就像Java中的ArrayList与LinkList,虽然都是实现了List接口作为集合载体,但其内部结构是不一样的,
ArrayList是通过数组实现的,LinkList是通过对象链表实现的。 由于 Hashtable 和 Dictionary 同时存在, 在使用场景上必然存在选择性, 并不任何时刻都能相互替代. [
1] 单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分. [2] 多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型.
而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减. [3] Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用 Dictionary 能获得一定方便. 个人偏向于使用Dictionary,因为其使用泛型,可控性比较强。在一些资料中,很多人也推荐使用Dictionary,其原因主要有 1、Dic是类型安全的,这有助于我们写出更健壮更具可读性的代码,而且省却我们强制转化的麻烦。 2、Dic是泛行的,当K或V是值类型时,其速度远远超过Hashtable。处理对象时不需要进行显式或是隐式转型,进行值类型处理时不需要装箱。所以使用方便一些,
而且效率会高一些(编码效率、运行效率),还不太容易出错。 Dictionary 调用 Add 方法之前使用 ContainsKey 方法测试某个键是否存在,否则得到一个KeyNotFoundException。当程序频繁尝试字典中不存在的键时,
使用 TryGetValue 方法来检索值,这种方法是一种更有效的检索值的方法。

 

 

 

 

 

你可能感兴趣的:(Hashtable)