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

这一点都不意外:您将相同的对象,即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 回答