<img width="613" alt="屏幕截图 2021-02-17 171926" src="https://user-images.githubusercontent.com/46998096/108182751-50aa8780-7144-11eb-86e0-c169bf9bb82a.png"> 这里应该是先链表尾插,然后treeifyBin(tab, hash);跳出循环,执行最后面的++modCount;和判断是否需要扩容了吧?
Activity
Snailclimb commentedon Feb 25, 2021
对的 老哥 这里确实存在问题。
Snailclimb commentedon Feb 25, 2021
已经修改说明!
eazydripz commentedon Jun 3, 2021
Thank you.
suozq1 commentedon Apr 8, 2022
感觉作者改的,跟问题反馈的没啥关系,树化是在插入链表后,只有插入链表末尾时,才会触发树化判断,即:如果当前链表长度大于等于8,执行树化【treeifyBin(tab, hash)】,执行树化时会判断当前table的长度,如果长度<64,进行resize而不是树化;图中,转为红黑树后,并不是红黑树插入,是已经插入链表后,才进行的红黑树转换
suozq1 commentedon Apr 8, 2022
该图多处细节跟源码出入较大,建议作者重新绘制,向Map中put是,如果是替换,size是不会++的,只有插入新的key,才会执行++
daizuojian commentedon Jul 8, 2022
CSDN上这个画的的可以
https://blog.csdn.net/citywu123/article/details/122125093
un1ink commentedon Mar 16, 2023
补充一下,扩容时此时binCount为7(即p指向第8个节点,p.next == null),再将新节点插入至链表末尾(注,此时该链表已有9个节点),随后触发(binCount >= TREEIFY_THRESHOLD - 1)再执行treeifyBin(tab, hash)。
zihenzzz commentedon May 31, 2025
1