关于Java HashMap的来源

时间:2013-04-24 22:04:34

标签: java hashmap

所以,我们有一个HashMap,里面有一个瞬态Entry []表。在许多方法中,例如,在clear()中,我们复制表:

public void clear() {
    modCount++;
    Entry[] tab = table;
    for (int i = 0; i < tab.length; i++)
        tab[i] = null;
    size = 0;
}

但是我们为什么要输入[] tab = table?下一个代码有什么问题?

public void clear() {
    modCount++;
    for (int i = 0; i < table.length; i++)
        table[i] = null;
    size = 0;
}

据我所知,tab只是对表的引用,乍一看,只是浪费空间。

2 个答案:

答案 0 :(得分:1)

 for (int i = 0; i < table.length; i++)
        tab[i] = null;

你是对的,tabtable都指向同一个对象。我看到的问题是使用for-conditional中的for表和for-body中的tab。你应该使用其中一个,但不能两个都使用。

tab是不必要的,但有时人们出于可读性原因这样做。这里没有意义,因为表更具可读性。如果我是代码审查这个,我会更喜欢第二个版本。

答案 1 :(得分:0)

它只是一个本地范围的对象引用。那里空间不大。

相关问题