HashMap Java 8 实现
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 TreeNodeextends 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; } } //... }
它是如何使用的?我只是想要一个算法的解释。