happyJared
HashMap 和 Hashtable 的区别
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
happyJared
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
HashMap 和 Hashtable 的区别
HashMap 和 Hashtable 的区别
happyJared
关注
发布于 2019-06-13 19:02:58
466
0
发布于 2019-06-13 19:02:58
举报
文章被收录于专栏:
happyJared
线程安全
: HashMap 是非线程安全的,而 Hashtable 是线程安全的,因为 Hashtable 内部的方法,基本都经过 synchronized 修饰(
如果要确保线程安全,建议使用 ConcurrentHashMap
);
执行效率
: 因为线程安全的原因,HashMap 要比 Hashtable 效率高;此外,由于 Hashtable 基本被淘汰,最好不要在项目中使用它;
对 Null key 和 Null value 的支持
: HashMap 中,null 可以作为键,这样的键最多可以有一个,但可以有一个或多个键所对应的值为 null;在 Hashtable 中,键和值都不能为 null,否则会直接抛出 NullPointerException;
初始容量大小和扩容的机制不同
: ① 创建时,如果未指定容量初始值,Hashtable 默认的初始大小为11,之后每次扩充,容量变为原来的 2n+1;HashMap 默认的初始大小为16,之后每次扩充,容量变为原来的2倍; ② 创建时,如果给定了容量初始值,Hashtable 将直接使用给定大小作为初始容量;而 HashMap 会将其扩充为2的幂次方大小,也就是说, HashMap 总是使用2的幂作为哈希表的大小;
底层数据结构
: JDK1.8 以后,HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)时,会自动将链表转化为红黑树,以减少搜索时间,而 Hashtable 没有这样的机制。
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
原始发表:2019.06.06 ,如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
hashmap
编程算法
安全
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
hashmap
编程算法
安全
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
文章
0
获赞
0
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐