java - 在Java中向二维数组添加空白行

标签 java matrix arraylist multidimensional-array

假设我在 Java 中将以下二维数组设置为名为 myMap 的变量:

1 3 1
3 2 3
1 3 1

我的程序的下一步是添加零的行和列,如下所示:

1 0 3 0 1
0 0 0 0 0
3 0 2 0 3
0 0 0 0 0
1 0 3 0 1

基本上,我将零数组添加到前面的行/列之间的空格中。然后,我用适当的数字填充它们(与我的问题无关),并重复该过程(添加更多的行/零列)有限次数。

我的问题如下 - 在 Java 中执行此操作最简单、最有效的方法是什么?我知道我可以创建一个新的二维数组并复制所有内容,但我觉得可能有一种更有效的方法来做到这一点。我的直觉告诉我,2d ArrayList 可能是更好的选择。

另外,这一点很重要,当我的程序开始时,我确实知道这个二维数组的最大大小是多少。另外,我无法期望在此示例中输入的数字是对称的(这些数字只是为了提供良好的视觉引用而输入的)。

最佳答案

这是 ArrayLists 的解决方案:(包括测试)

    int[][] ar = new int[][]
        {
        { 0, 1, 2 },
        { 3, 4, 5 },
        { 6, 7, 8 } };
    ArrayList<ArrayList<Integer>> a = new ArrayList<>(ar.length);
    ArrayList<Integer> blankLine = new ArrayList<>(ar.length * 2 - 1);
    for (int i = 0; i < ar.length * 2 - 1; i++)
    {
        blankLine.add(0);
    }

    for (int i = 0; i < ar.length; i++)
    {
        ArrayList<Integer> line = new ArrayList<>();
        for (int j = 0; j < ar[i].length; j++)
        {
            line.add(ar[i][j]);
            if (j != ar[i].length - 1)
                line.add(0);
        }
        a.add(line);
        if (i != ar.length - 1)
            a.add(blankLine);
    }

    for (ArrayList<Integer> b : a)
    {
        System.out.println(b);
    }

输出:

[0, 0, 1, 0, 2]
[0, 0, 0, 0, 0]
[3, 0, 4, 0, 5]
[0, 0, 0, 0, 0]
[6, 0, 7, 0, 8]

关于java - 在Java中向二维数组添加空白行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907587/

相关文章:

Java ArrayList - 检查列表是否为空

Java 多次按钮单击

python - 检查矩阵中的列或对角线是否 = x(不使用 Numpy)

python - 使用 numpy 将数组元素添加到矩阵的每一列

java - 无法克隆 ArrayList<MatOfPoint> 元素

php - 将元素添加到具有间隙数字键的数组以形成索引数组/列表

java - 我可以将请求中的多个参数组合到 Controller 的单个参数中吗?

java - boolean 值 - 它应该停止时却没有停止(JAVA)

java - EntityManager.remove() 不会生成删除查询并且不会删除实体

c++ - 除非旋转为 0 度或 180 度,否则物体不会朝它所面对的方向移动