一文读懂HashMap和HashTable的区别以及常见面试题(27)


       table = new Entry[initialCapacity
;        //计算阀值
       threshold = (int)Math.min(initialCapacity * loadFactor MAX_ARRAY_SIZE + 1);        //初始化HashSeed值
       initHashSeedAsNeeded(initialCapacity);
   

\n \n

用指定初始容量和指定加载因子构造一个新的空哈希表 。 其中initHashSeedAsNeeded方法用于初始化hashSeed参数 , 其中hashSeed用于计算key的hash值 , 它与key的hashCode进行按位异或运算 。 这个hashSeed是一个与实例相关的随机值 , 主要用于解决hash冲突 。

\n

private int hash(Object k) {        return hashSeed ^ k.hashCode();
   

\n

构造一个与给定的 Map 具有相同映射关系的新哈希表 。

\n

public Hashtable(Map<? extends K ? extends V> t) {        //设置table容器大小 , 其值==t.size * 2 + 1

推荐阅读