java - 在二维数组的末尾添加新列

标签 java arrays multidimensional-array

所以我尝试在二维数组的末尾添加一列。我尝试做的是复制该数组,但长度增加 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

如有任何帮助,我们将不胜感激!

最佳答案

流式传输外部数组并复制内部数组

  1. 流式传输二维数组
  2. 将每个元素(一维数组)映射到增加的列大小
  3. 将一维数组收集为二维数组
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));
}

相同的输出数组

如果必须在同一数组中进行更改,

  1. 迭代二维
  2. 增加每个一维数组的大小并复制并分配回来
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/

相关文章:

java - 使用 Jersey 添加 header 授权

java - 从 Java 运行的 Groovy 脚本是否具有相同的类路径?

Python 数组赋值

java - Android创建多维数组并获取值

php - 如何将mysql查询数据打印到php多维数组中?

java - 案例中涉及实例化的switch语句如何使用?

带有 'semantics' 的 Java 泛型,这可能吗?

java - 如果超过最大限制,则拆分文件数组

javascript - 在具有两个元素的数组中查找正点元素javascript

powershell - 使用哈希表的多列输出