java HashMap HashTable ConcurrentHashMap总结

147 阅读1分钟

HashMap

  • 内部结构是数组+单链表+红黑树,当key的哈希值相同时会存入到链表中,当单个链表超过阈值时会转化为红黑树来存储
  • 当单个红黑树上的元素超过阈值时会进行数组的转移
  • 非线程安全的

HashTable

  • 内部数据结构和HashMap类似
  • 线程安全的,加的是对象锁

ConcurrentHashMap

  • 1.7使用的是segment 1.8未使用
  • 当HashCode相同时,会遍历链表,并把元素插入到链表的尾部
  • 锁加在了对应数组的元素上,也就是链表的头节点上