Hashtable,HashMap,Dictionary的区别
Hashtable和HashMap的区别:
1.Hashtable是基于Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现,c#中无HashMap
2.Hashtable的方法是同步的,而HashMap的方法不是
3.HashMap可以让你将空值作为一个表的条目的key或value,Hashtable不可
Hashtable和Dictionary的区别:
(1).Hashtable不支持泛型,而Dictionary支持泛型。
Dictionary<int,string> dictionary = new Dictionary<int,string>(); Hashtable不可如此写
(2). Hashtable 的元素属于 Object 类型,所以在存储或检索值类型时通常发生装箱和拆箱的操作,所以你可能需要进行一些类型转换的操作,而且对于int,float这些值类型还需要进行装箱等操作,非常耗时。
(3).单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分。多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减。