源码探究Java_HashMap
2021-06-20 08:03
标签:加载 instance code table 冲突 object 默认 计算 如何 1. HashMap 定义,抽取HashMap类中主要变量,如下 2. hash值如何计算 3. 在上一步中查看字符串怎么计算hash值的时候发现HashMap内部的一个恶汉式的单例实现 源码探究Java_HashMap 标签:加载 instance code table 冲突 object 默认 计算 如何 原文地址:https://www.cnblogs.com/hsuchan/p/9689122.htmlpublic class HashMap
final int hash(Object k) {
int h = hashSeed;
/** 字符串hash计算 */
if (0 != h && k instanceof String) {
return sun.misc.Hashing.stringHash32((String) k);
}
h ^= k.hashCode();
/**此函数确保在每个位位置仅相差常数倍的hashCodes具有有限的冲突数(默认加载因子大约为8)*/
h ^= (h >>> 20) ^ (h >>> 12);
return h ^ (h >>> 7) ^ (h >>> 4);
}private static class Holder {
static final JavaLangAccess LANG_ACCESS = SharedSecrets.getJavaLangAccess();
private Holder() {
}
static {
if(null == LANG_ACCESS) {
throw new Error("Shared secrets not initialized");
}
}
}
上一篇:python 希尔排序