HashMap与哈希表

1. 哈希表简介

  • O(1)的增删改查
  • 核心是基于哈希值的桶和链表(Java8引入红黑树缓解哈希碰撞缺陷)
    • 哈希桶是数组实现,随机访问为O(1)
  • 致命缺陷是哈希值的碰撞(collision)
    • 哈希碰撞后形成链表
    • 精心设计的哈希碰撞数据,可以使性能急剧恶化(直至变成一个链表)

Java7中的HashMap

经典的哈希表实现

Java7中的HashMap的问题

1. 非常容易碰到死锁

2. 潜在的安全隐患

Java8的HashMap改进