在分析jdk1.8的HashMap实现原理之前,咱们先可以了解一下红黑树的设计,相比jdk1.7的HashMap而言,jdk1.8最重要的就是引入了红黑树的设计,当冲突的链表长度超过8个的时候,链表结构就会转为红黑树结构。
01、故事的起因
JDK1.8最重要的就是引入了红黑树的设计(当冲突的链表长度超过8个的时候),为什么要这样设计呢?好处就是避免在最极端的情况下冲突链表变得很长很长,在查询的时候,效率会非常慢。
![ab6b0da164ff26ab5b0328eade80a126.png](https://img-blog.csdnimg.cn/img_convert/ab6b0da164ff26ab5b0328eade80a126.png)
- 红黑树查询:其访问性能近似于折半查找,时间复杂度O(logn);
- 链表查询:这种情况下,需要遍历全部元素才行,时间复杂度O(n);
本文主要是讲解红黑树的实现,只有充分理解了红黑树,对于后面的分析才会更加顺利。
简单的说,红黑树是一种近似平衡的二叉查找树,其主要的优点就是“平衡“,即左右子树高度几乎一致,以此来防止树退化为链表,通过这种方式来保障查找的时