Hashtable和hashMap有什么区别(美的2020面试题)

   日期:2020-09-03     浏览:84    评论:0    
核心提示:1. 继承父类HashMap 继承 AbstractMap;Hashtable继承Dictionary类,Dictionary类已过时,子类不建议使用,一般认为Hashtable是一个遗留类2. 线程安全性HashMap线程不安全,Hashtable线程安全3. 包含的contains方法contains方法通常用于获取一些数据中是否包含指定的数据。HashMap中将contains拆分为 containsValue 和 containsKey ,分别可以获取key和valu...

1. 继承父类

HashMap 继承 AbstractMap;Hashtable继承Dictionary类,Dictionary类已过时,子类不建议使用,一般认为Hashtable是一个遗留类

2. 线程安全性

HashMap线程不安全,Hashtable线程安全

3. 包含的contains方法

contains方法通常用于获取一些数据中是否包含指定的数据。

HashMap中将contains拆分为  containsValue  和  containsKey  ,分别可以获取key和value是否包含指定内容

Hashtable保留了contains方法,效果同containsValue 

4. 是否允许null

HashMap的key和value都允许,Hashtable都不允许

5. 计算Hash值方法

HashMap计算key的hash值使用的是HashMap中的hash()方法,避免了过多的hash冲突

Hashtable用的是key的hashcode()方法获取hash值

6. 扩容方式不同

HashMap扩容为原来的2倍,Hashtable扩容为原来的2倍+1

HashMap初始容量16,大小必须2的指数倍;Hashtable默认11,大小可以自由定义

7. 底层实现不同

HashMap采用 数组 + 链表 + 红黑树(Java8之后);Hashtable采用 数组 + 链表

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服