DESKTOP-86ONKLH_20200911-刘天阳
1、问题
HashMap 和 Hashtable 的区别
相同
- 两者都实现 Map 接口,用于存放
键-值对
- 内部都采用 哈希表 实现,都采用 哈希算法计算
键-值对
的存放位置
区别
-
是否支持线程安全
- HashMap 非线程安全,理论上效率较高
- Hashtable 线程安全,理论上效率较低
-
内部实现不同
- 从 JDK 1.8 ( Java 8 ) 开始,HashMap 内部采用 数组 + 链表 + 红黑树 方式存储
- 而 Hashtable 内部则采用 数组 + 链表 实现
-
对元素位置的计算方法不同
- HashMap 内部采用一个单独的方法根据 key.hashCode() 重新计算一个哈希值后再确定元素存放位置
- Hashtable 内部直接采用 key.hashCode() 来确定元素存放位置
-
两者所继承的类不同
- HashMap 类继承 AbstraceMap 类
- Hashtable 类继承 Dictionary 类
-
是否支持 null
- HashMap 支持 null 键 和 null 值
- Hashtable 不支持 null 键 和 null 值
2、吐槽
考试!考试!考试!
近期评论