HashMap 底层实现原理是什么?JDK8 做了哪些优化?
时间: 2023-03-27 07:03:45 浏览: 28
HashMap 是一种哈希表实现的映射。它存储键值对,允许用户快速查找特定键对应的值。
HashMap 底层是通过数组和链表实现的。它将键哈希成一个整数,然后将键值对存储在数组中的对应位置。如果多个键值对映射到了同一个数组位置,它们就会按照链表的形式连接起来。
在 JDK8 中,HashMap 做了以下优化:
1. 当链表长度大于某个阈值(默认为 8)时,会自动转换为红黑树。这样可以使查询的时间复杂度从 O(n) 降低到 O(log n)。
2. 当哈希表中的实际大小(键值对数量)超过哈希表数组的大小时,会自动将哈希表数组的大小增加一倍。这样可以减少碰撞的次数,提高查询效率。
3. 引入了“红色哈希码”(fusing hash code)技术,可以通过一个状态位来标识一个节点是否被搬迁过。这样可以在查询时避免对节点的额外访问,提高查询效率。
阅读全文