다음 링크 문서에 따라 : Java HashMap 구현
의 구현 HashMap
(또는 오히려 향상 HashMap
) 과 혼동됩니다 . 내 쿼리는 다음과 같습니다.
첫째로
static final int TREEIFY_THRESHOLD = 8;
static final int UNTREEIFY_THRESHOLD = 6;
static final int MIN_TREEIFY_CAPACITY = 64;
이 상수는 왜 그리고 어떻게 사용됩니까? 이에 대한 명확한 예가 필요합니다. 이를 통해 어떻게 성능 향상을 달성하고 있습니까?
둘째
HashMap
JDK에서 의 소스 코드를 보면 다음과 같은 정적 내부 클래스를 찾을 수 있습니다.
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;
}
}
//...
}
어떻게 사용합니까? 알고리즘에 대한 설명이 필요합니다 .
String
은int
해시 코드 보다 훨씬 더 큰 값 공간을 가지므로 충돌을 피할 수 없습니다. 이제는 실제 값과 같은 실제 값에 따라 달라집니다String
. 균등 분포를 얻었는지 여부에 관계없이지도에 입력합니다. 잘못된 분배는 단지 불운의 결과 일 수 있습니다.