1

したがって、HashMap と、その中に一時的な Entry[] テーブルがあります。clear() などの多くのメソッドでは、テーブルをコピーします。

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

しかし、なぜ Entry[] tab = table を行うのでしょうか? 次のコードで何が問題になっていますか?

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

私の知る限り、タブはテーブルへの参照にすぎず、一見したところ、スペースを無駄にしているだけです。

4

2 に答える 2

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

おっしゃる通りtabtableどちらも同じオブジェクトを指しています。私が見る問題は、for 条件でテーブルを使用し、for ボディでタブを使用することです。どちらか一方を使用する必要がありますが、両方を使用することはできません。

tab不要ですが、読みやすさの理由でこれを行うことがあります。テーブルの方が読みやすいので、ここでは意味がありません。これをコード レビューする場合、2 番目のバージョンを強くお勧めします。

于 2013-04-24T22:07:32.063 に答える
0

これは、ローカル スコープのオブジェクト参照の 1 つにすぎません。そこには多くのスペースがありません。

于 2013-04-24T22:07:02.487 に答える