所以我尝试在二维数组的末尾添加一列。我尝试做的是复制该数组,但长度增加 1。唯一的问题是扩展了行,而不是列。
// Trying to make the 2d array bigger
public static String[][] FLname = new String[1][0];
FLname = Arrays.copyOf(FLname, FLname.length + 1);
// Inserting the values
FLname[0][FLname.length - 1] = fName;
FLname[1][FLname.length - 1] = lName;
我最终得到了一个ArrayIndexOutOfBoundsException
如有任何帮助,我们将不胜感激!
最佳答案
流式传输外部数组并复制内部数组
- 流式传输二维数组
- 将每个元素(一维数组)映射到增加的列大小
- 将一维数组收集为二维数组
public static void main(String[] args) {
final int increaseColumnDelta = 2;
String[][] input = {null, {"B"}};
System.out.println(Arrays.deepToString(input));
String[][] updated = Arrays.stream(input)
.map(r -> r != null ?
Arrays.copyOf(r, r.length + increaseColumnDelta)
: new String[increaseColumnDelta])
.toArray(String[][]::new);
System.out.println(Arrays.deepToString(updated));
}
相同的输出数组
如果必须在同一数组中进行更改,
- 迭代二维
- 增加每个一维数组的大小并复制并分配回来
public static void main(String[] args) {
final int increaseColumnDelta = 2;
String[][] input = {{"A", "1"}, {"B"}};
System.out.println(Arrays.deepToString(input));
IntStream.range(0, input.length)
.forEach(i -> input[i] = input[i] != null ?
Arrays.copyOf(input[i], input[i].length
+ increaseColumnDelta)
: new String[increaseColumnDelta]);
System.out.println(Arrays.deepToString(input));
}
关于java - 在二维数组的末尾添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66308412/