所以,我们有一个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只是对表的引用,乍一看,只是浪费空间。
答案 0 :(得分:1)
for (int i = 0; i < table.length; i++)
tab[i] = null;
你是对的,tab
和table
都指向同一个对象。我看到的问题是使用for-conditional中的for表和for-body中的tab。你应该使用其中一个,但不能两个都使用。
tab
是不必要的,但有时人们出于可读性原因这样做。这里没有意义,因为表更具可读性。如果我是代码审查这个,我会更喜欢第二个版本。
答案 1 :(得分:0)
它只是一个本地范围的对象引用。那里空间不大。