java - 将 ArrayList 转换为二维数组时出现问题,仅显示最后添加的值

标签 java arrays arraylist

我有以下代码:

ArrayList<String[]> pregsAl= new ArrayList<>();
    String[] row = new String[preguntasArray.length];
    for (int i=0; i<preguntasArray[0].length; i++) {
        for (int j=0; j<preguntasArray.length; j++) {
            row[j]= preguntasArray[j][i];
            Log.d("row1values",row[0]);
        }
        pregsAl.add(i, row);
    }
    String[][] preguntasArrayrand= new String[pregsAl.get(0).length][pregsAl.size()];
    String[]row1;
    for (int i=0; i<pregsAl.size(); i++) {
        row1=pregsAl.get(i);
        Log.d("row1values",row1[0]);
        for(int j=0; j<row.length; j++){
            preguntasArrayrand[j][i]=row1[j];
        }
    }

当第一个 Log.d 运行时,我可以看到正确的值被添加到 ArrayList“pregsAl”中,但是,当我使用 get 方法将值获取到 String[] 对象时它会只需一遍又一遍地读取我添加到 pregsAl ArrayList 中的最后一个元素(我可以通过我的 Log.d 知道)。我想要做的是将所有数组 preguntasArray 传递给 ArrayList,然后对该 ArrayList 进行洗牌,以便再次将该 ArrayList 转换为数组,但是如果我无法将数组传递给 ArrayList 并且然后再次成功返回数组。我做错了什么?

最佳答案

您仅实例化了一个数组,并且将该引用多次添加到您的List中。将数组声明初始化移至循环内部。比如,

// String[] row = new String[preguntasArray.length];
for (int i=0; i<preguntasArray[0].length; i++) {
    String[] row = new String[preguntasArray.length];
    for (int j=0; j<preguntasArray.length; j++) {
        row[j]= preguntasArray[j][i];
        Log.d("row1values",row[0]);
    }
    pregsAl.add(i, row);
}

关于java - 将 ArrayList 转换为二维数组时出现问题,仅显示最后添加的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35005171/

相关文章:

java - 制作并显示整数数组的所有排列

java - 当 ArrayList 中删除索引时,如何自动删除 JPanel 上的形状?

java - 通过合并排序对对象属性进行排序

java - 尝试在 Java 中检查重复项

java - 如何使用 spring.config.additional-location 外部化配置?

java - Activiti 的日志配置

java - 调用ArrayList时遇到问题

java - 尝试实现多态但错误: method does not override or implement a method from a supertype

javascript - 获取数组中最长的列表标题名称 javascript Sharepoint

javascript - 如何限制 JavaScript 游戏中的子弹数量?