HashMap Java 8 实现

25 浏览
0 Comments

HashMap Java 8 实现

根据以下链接文档:Java HashMap实现,我对HashMap的实现(或者说HashMap的改进)感到困惑。我的问题是:

首先

static final int TREEIFY_THRESHOLD = 8;
static final int UNTREEIFY_THRESHOLD = 6;
static final int MIN_TREEIFY_CAPACITY = 64;

这些常量的作用和使用方式是什么?我想要一些清晰的例子来解释。它们如何通过这种方式提高性能?

其次

如果你查看JDK中HashMap的源代码,你会发现以下静态内部类:

static final class TreeNode extends java.util.LinkedHashMap.Entry {
    HashMap.TreeNode parent;
    HashMap.TreeNode left;
    HashMap.TreeNode right;
    HashMap.TreeNode prev;
    boolean red;
    TreeNode(int arg0, K arg1, V arg2, HashMap.Node arg3) {
        super(arg0, arg1, arg2, arg3);
    }
    final HashMap.TreeNode root() {
        HashMap.TreeNode arg0 = this;
        while (true) {
            HashMap.TreeNode arg1 = arg0.parent;
            if (arg0.parent == null) {
                return arg0;
            }
            arg0 = arg1;
        }
    }
    //...
}

它是如何使用的?我只是想要一个算法的解释。

0