java hashMap简单使用以及深度分析 (三)

2014-11-24 07:51:02 · 作者: · 浏览: 5
for (Entry e = table[indexFor(hash, table.length)];
e != null;
e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
return e.value;
}
return null;
}
2:如果数据大小是固定的,那么最好给HashMap设定一个合理的容量值
根据上面的分析,HashMap的初始默认容量是16,默认加载因子是0.75.
也就是说,如果采用HashMap的默认构造函数,
当增加数据时,数据实际容量超过10*0.75=12时,HashMap就扩容,扩容带来一系列的运算.
新建一个是原来容量2倍的数组,对原有元素全部重新哈希,如果你的数据有几千几万个,
而用默认的HashMap构造函数,那结果是非常悲剧的,因为HashMap不断扩容,
不断哈希,在使用HashMap的场景里,不会是多个线程共享一个HashMap,除非对HashMap包装并同步,
由此产生的内存开销和cpu开销在某些情况下可能是致命的。

摘自 天道酬勤