JAVA Arraylist 意外输出

标签 java list arraylist

预期输出: 单元格 1 单元格 2 Cell-3 Cell-4

但我得到的输出是: 单元 3 单元 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();
    }
}

} `

最佳答案

这一点也不出乎意料:您添加了相同的对象,即 ArrayList r , 至 ArrayList var两次。首先,当它有 Cell-1 Cell-2 时添加它,然后清除它,然后用 Cell-3 Cell-4 添加它.问题是,当您调用 r.clear() ,您添加到 var 的数组列表也被清除。

您需要创建一个新的 ArrayList而不是清除现有的来解决这个问题:替换 r.clear()r = new ArrayList<String>() ,问题就会消失。

关于JAVA Arraylist 意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15946009/

相关文章:

java - 如何在 Java 中按名称对列表列表进行分组

java - 使用Facebook SDK 4在Android中加载Facebook个人资料图片时获取异常

python - python中的连续字母列表并获取它的每个值

python - 列表列表中每个元素的索引

java - Arraylist 删除重名并修改另一个 arraylist

groovy - 加入 bool 元素列表groovy

java - 连接特定组件字段类型的特定子类(@SpringBootApplication 和 @Autowire)

Java Key Store 总是以空别名结束

java - 通过与 IIS 8.5 连接的 TomCat 管理器部署时出现 404 错误

java - 从 Java 转换为 Python