前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HashMap与Hashtable区别

HashMap与Hashtable区别

作者头像
全栈开发日记
发布2022-05-12 20:53:59
2930
发布2022-05-12 20:53:59
举报
文章被收录于专栏:全栈开发日记

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异常。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档