hashmap为什么8转成红黑树_深入分析HashMap的红黑树实现方式

在分析jdk1.8的HashMap实现原理之前,咱们先可以了解一下红黑树的设计,相比jdk1.7的HashMap而言,jdk1.8最重要的就是引入了红黑树的设计,当冲突的链表长度超过8个的时候,链表结构就会转为红黑树结构。01、故事的起因JDK1.8最重要的就是引入了红黑树的设计(当冲突的链表长度超过8个的时候),为什么要这样设计呢?好处就是避免在最极端的情况下冲突链表变得很长很长,在查询的时候,...
摘要由CSDN通过智能技术生成
在分析jdk1.8的HashMap实现原理之前,咱们先可以了解一下红黑树的设计,相比jdk1.7的HashMap而言,jdk1.8最重要的就是引入了红黑树的设计,当冲突的链表长度超过8个的时候,链表结构就会转为红黑树结构。

01、故事的起因

JDK1.8最重要的就是引入了红黑树的设计(当冲突的链表长度超过8个的时候),为什么要这样设计呢?好处就是避免在最极端的情况下冲突链表变得很长很长,在查询的时候,效率会非常慢。
ab6b0da164ff26ab5b0328eade80a126.png
  • 红黑树查询:其访问性能近似于折半查找,时间复杂度O(logn);
  • 链表查询:这种情况下,需要遍历全部元素才行,时间复杂度O(n);

本文主要是讲解红黑树的实现,只有充分理解了红黑树,对于后面的分析才会更加顺利。

简单的说,红黑树是一种近似平衡的二叉查找树,其主要的优点就是“平衡“,即左右子树高度几乎一致,以此来防止树退化为链表,通过这种方式来保障查找的时
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值