当条目越过饱和度时,如何在Java8 HashMap中创建树[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我正在浏览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 java-8 hashmap
1个回答
1
投票

在Java 8中,当存储桶中的元素数量达到特定阈值时,HashMap用二叉树替换链表。

在将列表转换为二叉树时,哈希码用作分支变量。

如果同一个存储桶中有两个不同的哈希码,则一个被认为更大,并且位于树的右侧,另一个位于左侧。

但是当两个哈希码相等时,HashMap假定密钥是可比较的,并比较密钥以确定方向,以便可以维护某些顺序。

© www.soinside.com 2019 - 2024. All rights reserved.