HashMap和HashTable的 区别

HashMap和Hashtable区别:

1,**Hashtable是线程安全的,HashMap是非线程安全的。**Hashtable是基于老的Diactionary类实现的,HashMap是Java 1.2引进Map接口后的重新实现。Hashtable的方法,进行了锁同步,可以支行于多线程环境。HashMap需要编程人员自在己为其提供同步,才能运行多线程中。常用的方法是:利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象或者是使用ConcurrentHashMap。

2,由于HashMap非是线程安全的,所以性能要明显优于Hashtable
如果多线程情况下呢?Hashtable的实现与Collections的静态方法synchronizedMap实现有点类似,使用synchronized来保证线程安全。所以如果在线程竞争激烈的情况下,效率就会非常低下,而且线程的安全性还紧限于get、put之类的简单操作。这时ConcurrentHashMap可能是最好的选择。

3,对空值处理:HashMap中允许有一个空的key,和任意个空的value,对Hashtable put空的key、value则会报错。如果判断HashMap是否存在某个key值,最准确的是使用containKey,而不是使用对get的值判空,因为你put的也许是个空值。

发布了54 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/liutaiyi8/article/details/82262784