java hashmap的一点代码的不解

请教大牛,我在hashmap的clear方法,看见
public void clear() {
modCount++;
Entry[] tab = table;
for (int i = 0; i < tab.length; i++)
tab[i] = null;
size = 0;
}
为什么要用局域的tab来指向全局的table,来清理呢,不直接用table来做?
这种类似的操作手法经常看见,一直很疑惑?谢谢

clear只对那一瞬间的表进行clear 比如在clear时 进行 扩容 并新增

你是说为什么不这样写嘛?
public void clear() {
modCount++;
for (int i = 0; i < table.length; i++)
table[i] = null;
size = 0;
}

如果在遍历时表扩容了呢
要写只能这样写:
public void clear() {
modCount++;
int len = table.length;
for (int i = 0; i < len; i++)
table[i] = null;
size = 0;
}

并发时的控制
类似 ConcurrentHashMap 和 CopyOnWriteArrayList