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的也许是个空值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值