1

期待される出力 : Cell-1 Cell-2 Cell-3 Cell-4

しかし、私が得ている出力は次のとおりです。 Cell-3 Cell-4 Cell-3 Cell-4

なぜこうなった?

import java.util.ArrayList;

public class Test {
public static void main(String... a) {
    String[][] var1 = new String[] []{{"Cell-1","Cell-2"},{"Cell-3","Cell-4"}};
    ArrayList<String> r = new ArrayList<String>();
    ArrayList<ArrayList<String>> var = new ArrayList<ArrayList<String>>();

    //Insering data into the ArrayList.
    for(String[] row : var1){
        r.clear();
        for(String data : row){
            r.add(data);
        }
        var.add(r);
    }

    //Print data to console.
    for(ArrayList<String> r1 : var){
        for(String cell : r1)
            System.out.print(cell+" ");
        System.out.println();
    }
}

} `

4

1 に答える 1

3

これはまったく予期しないことではありません。同じオブジェクト、つまり を Twice に追加しArrayList rますArrayList var。最初に があるときに追加しCell-1 Cell-2、次にクリアしてから で追加しCell-3 Cell-4ます。問題は、 を呼び出すとr.clear()、追加した配列リストもvarクリアされることです。

ArrayListこの問題を解決するには、既存のものをクリアするのではなく、新しいものを作成する必要があります: に置き換えるr.clear()r = new ArrayList<String>()、問題はなくなります。

于 2013-04-11T10:13:15.913 に答える