/**
* 该函数用于将一个map赋值给新的HashMap
* @param m 传入的map集合
* @param evict
*/
final void putMapEntries(Map<? extends K, ? extends V> m, boolean evict) {
//获取传入的map集合的大小
int s = m.size();
if (s > 0) {
//如果HashMap没有被初始化
if (this.table == null) {
//将s除以负载因子+1可以得到HashMap所需的最大负载容量
float ft = (float)s / this.loadFactor + 1.0F;
//如果计算得到的最大负载容量大于最大值,则将t赋值为最大值
int t = ft < 1.07374182E9F ? (int)ft : 1073741824;
//如果t大于当前最大负载容量,则进行调整
if (t > this.threshold) {
this.threshold = tableSizeFor(t);
}
}
//如果table已经被初始化且传入map的大小大于当前的最大负载容量则开始调整HashMap的大小
else if (s > this.threshold) {
this.resize();
}
//获取传入map的迭代器
Iterator var8 = m.entrySet().iterator();
//将map中的元素逐一添加到HashMap中
while(var8.hasNext()) {
Entry<? extends K, ? extends V> e = (Entry)var8.next();
K key = e.getKey();
V value = e.getValue();
this.putVal(hash(key), key, value, false, evict);
}
}
}