07-HashTable和HashMap的区别

1、HashMap和HashTable的区别

  • 区别
    • ①、HashMap是非线程安全的,HashTable是线程安全的
    • ②、HshMap的键和值都允许 null 值存在,而HashTable则不行
    • ③、因为线程安全问题,HashMap效率比HashTable要
    • ④、HashTable是同步的,而HashMap不是;因此,HashMap更适合单线程环境,HashTable适合多线程环境
      • 不过现在不建议用HashTable,一方面是HashTable是遗留类,内部的实现很多没有优化和冗余另一个方面是,即使在多线程环境下,现在也有同步的ConcurrentHashMap替代,没有必要因为是多线程而用HashTable

2、补充:HashTable和ConcurrentHashMap的区别

  • HashTable使用的是Synchronized关键字修饰,ConcurrentHashMap是JDK1.7使用了锁分段技术来保证线程安全JDK1.8ConcurrentHashMap取消了Segment分段锁,采用了CAS和sychronized来保证并发安全
  • ConcurrentHashMap数据结构跟HashMap1.8的结构类似,数组 + 链表/红黑二叉树
  • synchronized只锁定当前链表或红黑树二叉树的首节点,这样只要hash不冲突,就不会产生并发,效率又提升N倍
posted @   OnlyOnYourself-Lzw  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示