e != null;
e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
return e.value;
}
return null;
}
根据上面的分析,HashMap的初始默认容量是16,默认加载因子是0.75.
也就是说,如果采用HashMap的默认构造函数,
当增加数据时,数据实际容量超过10*0.75=12时,HashMap就扩容,扩容带来一系列的运算.
新建一个是原来容量2倍的数组,对原有元素全部重新哈希,如果你的数据有几千几万个,
而用默认的HashMap构造函数,那结果是非常悲剧的,因为HashMap不断扩容,
不断哈希,在使用HashMap的场景里,不会是多个线程共享一个HashMap,除非对HashMap包装并同步,
由此产生的内存开销和cpu开销在某些情况下可能是致命的。
摘自 天道酬勤