3分钟让你明白:HashMap之红黑树树化过程
发布时间:2019-10-13 19:01:54 所属栏目:优化 来源:追逐仰望星空
导读:01 概述 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文主要分析一下HashMap中红黑树树化的过程。 02
我们已知xp是xpp的左节点,首先判断了x是xp的左节点还是右节点,如果是右节点的话构成了下面的结构。 ![]() 这中结构需要进行双旋转,首先先进行一次向左旋转。 7.1 左旋转
1.刚进入方法时,状态如下图。(RL可能是空的) ![]() 2.进入了if块后执行到第10行后。
![]() 此时如果9行的条件符合的话执行10行RL指向P,如果RL为null的话,P的右节点指向null。 3.接着看11和12行代码。
首先我们看11行if里面的赋值语句所造成的影响。 ![]() 在if里面的表达式不管符不符合条件()内的内容都会执行。 如果符合条件的话会执行12行的代码,变成了下面的结果。 ![]() 由于PP为空所以只剩下这三个。 4.如果11行的条件为假的话,执行完11行()内的表达式后执行13行
![]() 满足条件的话R和PP互相关联。 5.由于进入了13和14行所以不进入15和16行的else语句。
6.看17和18行。
![]() 最终执行完了一个旋转变成了我们开始说的第一种旋转的形式,这个结构还需要向右旋转一次。
(编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |