这个问题在这里已有答案:
我正在浏览java 8中的TreeNode类。
static final class TreeNode<K, V> extends java.util.LinkedHashMap.Entry<K, V> {
HashMap.TreeNode<K, V> parent;
HashMap.TreeNode<K, V> left;
HashMap.TreeNode<K, V> right;
HashMap.TreeNode<K, V> prev;
boolean red;
TreeNode(int arg0, K arg1, V arg2, HashMap.Node<K, V> arg3) {
super(arg0, arg1, arg2, arg3);
}
由于树将在HashCode为SAME时创建,即对于所有Hash Collides键,桶将是相同的。那么当条目在同一个桶中超过8时,如何创建RED-Black树?
在Java 8中,当存储桶中的元素数量达到特定阈值时,HashMap用二叉树替换链表。
在将列表转换为二叉树时,哈希码用作分支变量。
如果同一个存储桶中有两个不同的哈希码,则一个被认为更大,并且位于树的右侧,另一个位于左侧。
但是当两个哈希码相等时,HashMap假定密钥是可比较的,并比较密钥以确定方向,以便可以维护某些顺序。