MIN_TREEIFY_CAPACITY不能理解
来源:10-4 HashMap
MySweeties
2020-03-27
当桶中节点大于TREEIFY_THRESHOLD时,会由链表结构转换为红黑树结构,当桶中节点小于UNTREEIFY_THRESHOLD时会由红黑树结构转换为链表结构,那么MIN_TREEIFY_CAPACITY是个什么含义呢?看了源码和网上博文,得到的是,如果桶中节点大于TREEIFY_THRESHOLD,但是整个哈希表的容量小于MIN_TREEIFY_CAPACITY时,只会扩容而不会变成红黑树,只有当大于了MIN_TREEIFY_CAPACITY并且大于TREEIFY_THRESHOLD才会变成树结构。。。那么之前的大于TREEIFY_THRESHOLD是在干嘛?理解起来总感觉怪怪的,多半是错了!希望老师或者其他有缘人能解答一下,大于TREEIFY_THRESHOLD时,存储的到底是什么?链表还是红黑树?到底什么时候会出现红黑树?
写回答
2回答
-
链表长度大于TREEIFY_THRESHOLD且数组长度大于MIN_TREEIFY_CAPACITY,链表转化为红黑树
链表长度大于TREEIFY_THRESHOLD(且数组长度不大于MIN_TREEIFY_CAPACITY),进行扩容,还是链表
342020-05-24 -
海与千巷
2020-03-27
当执行put方法时,若某一个桶中的链表长度达到TREEIFY_THRESHOLD(8)时,尝试调用树化方法,树化方法中会再次判断数组长度(即桶的数量)是否大于MIN_TREEIFY_CAPACITY(64),大于则将链表变为红黑树,否则不树化(只进行普通扩容,即桶的数量加倍)
10
相似问题