HashMap 和 Hashtable 的区别

1、HashMap 和 Hashtable 都实现了 Map、Cloneable(可复制)、Serializable(可序列化)这三个接口。

2、HashMap 继承AbstractMap, Hashtable 继承Dictionary。

3、HashMap 在只有一个线程访问的情况下,效率高于Hashtable。

4、先有Hashtable (始于初始版本,作者:Json Bloch),后有 HashMap(始于JDK1.2,作者 Doug lea)

5、HashMap 允许将 null 作为一个 entryd的 key 或 value,而Hashtable 不允许。

6、HashMap 没有contains方法,取而代之的是 containsValue 和 containsKey。

7、HashMap 是Hashtable的轻量级实现(非线程安全的实现),Hashtable 是线程安全的,即线程同步。

8、 遍历方式的内部实现上有所不同,Hashtable、HashMap虽然都使用了 Iterator。但Hashtable还使用了Enumeration的方式 。

9、 初始容量大小和每次扩充容量大小的不同 :
       1) Hashtable默认的初始大小为11,之后每次扩充,容量变为原来的2n+1。
       2) HashMap默认的初始化大小为16。之后每次扩充,容量变为原来的2倍。

10、计算hash值的方法不同 
      1) HashMap 首先需要根据元素的 KEY计算出一个hash值,然后再用这个hash值来计算得到最终的位置。
      2) Hashtable直接使用对象的hashCode。ha

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值