【HashMap 与Hashtable的区别】

HashMap 与Hashtable的区别?

  1. 线程安全
    Hashtable是线程安全的,HashMap 不是线程安全的。
    Hashtable 所有的元素操作都是synchronized修饰的
    而HashMap并没有

  2. 性能优劣
    既然Hashtable是线程安全的,每个方法都要阻塞其他线程,所以Hashtable性能较差HashMap性能较好,使用更广。
    如果要线程安全又要保证性能,建议使用JUC包下的ConcurrentHashMap.

  3. NUll
    Hashtable是不允许键值为null
    HashMap的键值都可以为null

  4. 实现方式
    Hashtable继承了Dictionary类
    HashMap继承的是AbstractMap类

  5. 容量扩容
    HashMap的初始容量为 16
    hashtable的初始容量为 11

    两者的负载因子默认都是 0.75
    当现有容量大于总容量 * 负载因子时,HashMap扩容规则为当前容量的翻倍,Hashtable扩容为当前容量翻倍+1

  6. 迭代器
    HashMap 中的 lterator迭代器是fail-fast 的
    Hashtable 的 Enumerator 不是 fail-fast的

    所以,当其他线程改变了HashMap 的结构,如:增加、删除元素,将会抛出ConcurrentModificationException异常,而Hashtable 则不会。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

业余码手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值