这段代码执行后HashMap会发生什么?
HashMap m = new HashMap();
for (int i = 0; i < 1024 * 1024; i++)
m.put(i, i);
m.clear();
在1M之后,内部哈希表将从原来的16增长到1MB. clear()是否将其调整为原始大小?
解决方法:
不,表格保留了它的大小.所有元素都设置为null:
public void clear() {
modCount++;
Entry[] tab = table;
for (int i = 0; i < tab.length; i++)
tab[i] = null;
size = 0;
}