【发布时间】:2017-10-10 05:13:10
【问题描述】:
根据以下链接文档:Java HashMap Implementation
我对@987654322@ 的实现感到困惑(或者更确切地说,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<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);
}
final HashMap.TreeNode<K, V> root() {
HashMap.TreeNode arg0 = this;
while (true) {
HashMap.TreeNode arg1 = arg0.parent;
if (arg0.parent == null) {
return arg0;
}
arg0 = arg1;
}
}
//...
}
它是如何使用的? 我只想解释一下算法。
【问题讨论】:
标签: java dictionary java-8 hashmap