0 0

java hashmap的一点代码的不解5

请教大牛,我在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来做?
这种类似的操作手法经常看见,一直很疑惑?谢谢
2012年8月27日 13:47

4个答案 按时间排序 按投票排序

0 0

采纳的答案

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

2012年8月27日 14:39
0 0

并发时的控制
类似 ConcurrentHashMap 和 CopyOnWriteArrayList

2012年8月28日 13:16
0 0

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

2012年8月27日 18:08
0 0

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

2012年8月27日 14:17

相关推荐

Global site tag (gtag.js) - Google Analytics