HashMap与Hashtable都实现了Map接口。
Hashtable在一开始便有了,而HashMap在JDK1.2后才出现。
它们主要区别:
1、线程安全性
Hashtable是线程安全的,它的每一个方法都是同步(synchronize)的。在多线程中我们可以直接使用Hashtable,多个线程可以共享Hashtable,而不需要我们来给它创建同步;
HashMap不是线程安全的,在多线程状态下,可能会产生死锁的状态,当然你也可以自己创建同步(synchronize)。
2、接受null值
Hashtable是不接受键值(key)和值(value)为null的;
而HashMap恰恰与上面相反。
3、对外提供的方法
Hashtable比HashMap多提供 elments() 和 contains() 两个方法。
4、容量
Hashtable初始容量为11,每次扩充容量会变成原来的两倍+1;
HashMap初始容量为16,每次扩充容量会变成原来的两倍。
5、迭代器
HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。
所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有