Java 8 HashMap中的最小树容量

Java 8 HashMap中的最小树容量,java-8,hashmap,Java 8,Hashmap,文件如下所示 /** * The smallest table capacity for which bins may be treeified. * (Otherwise the table is resized if too many nodes in a bin.) * Should be at least 4 * TREEIFY_THRESHOLD to avoid conflicts * between resizing and tree

文件如下所示

    /**
     * The smallest table capacity for which bins may be treeified.
     * (Otherwise the table is resized if too many nodes in a bin.)
     * Should be at least 4 * TREEIFY_THRESHOLD to avoid conflicts
     * between resizing and treeification thresholds.
     */

您能否解释一下将此参数设置为至少4*TREEIFY_THRESHOLD的基本原理或逻辑?从java 8开始,当链表中的条目达到8(MIN_TREEIFY_CAPACITY;)时,它会将链表转换为平衡树。这将性能提高了一百万倍。

MIN\u TREEIFY\u CAPACITY意味着hashmap中的bucket总数应该是64,这样就可以将bucket从链表转换为红黑树(自平衡BST)。
此外,还应满足TREEIFY_阈值条件。i、 e每个bucket应该有8个或更多的条目。

可能是一个通过基准测试典型(或最坏情况)数据集确定的值。从算法上看,我无法得出这个因素…