1:单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.
2:多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减.
3:Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用 Dictionary 能获得一定方便.
Dictionary<int, string> dic = new Dictionary<int, string>();
dic.Add(1, "切尔西");
dic.Add(2, "巴萨");
dic.Add(3, "曼联");
foreach (KeyValuePair<int, string> kvp in dic) //Dictionary的遍历
{
Console.WriteLine("Key:{0},Value:{1}" + "<br/>" + "<br/>" + "<br/>", kvp.Key.ToString(), kvp.Value.ToString());
}
Hashtable ht = new Hashtable();
ht.Add(1, "昕哥");
ht.Add(2, "MacSed");
ht.Add(3, "Jim老师");
ht.Add(4, "A哥");
ht.Add(5, "播个");
foreach (DictionaryEntry item in ht) //Hashtable的遍历
{
Console.WriteLine("Key:{0},Value:{1}", item.Key.ToString(), item.Value.ToString());
}
ArrayList alv = new ArrayList(ht.Values);
alv.Sort();
for (int i = 0; i < alv.Count; i++)
{
Console.WriteLine(alv[i]);
}
Hashtable中的key和value都是object类型,而dictionary中需要指定类型