3分钟让你大白:HashMap之红黑树树化进程
发布时间:2019-10-13 08:58:37 所属栏目:建站 来源:追逐仰望星空
导读: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行。
![]() 最终执行完了一个旋转酿成了我们开始说的第一种旋转的情势,这个布局还必要向右旋转一次。
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |