gpt4 book ai didi

java - 将空白行添加到 Java 中的二维数组

转载 作者:行者123 更新时间:2023-11-30 11:42:08 25 4
gpt4 key购买 nike

假设我在 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 中执行此操作的最简单和最有效的方法是什么?我知道我可以创建一个新的二维数组并复制所有内容,但我觉得可能有更有效的方法来执行此操作。我的直觉告诉我,二维 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com