在java中向多维数组添加一个元素

Stu*_*ner 0 java arrays multidimensional-array

一种方法是在java中返回一个二维数组.我想再添加一个元素.不确定如何将其复制到另一个新的二维数组并添加一个元素的语法.有人有想法吗?

String arr[][]=getTwoDArray();
Run Code Online (Sandbox Code Playgroud)

现在我想再添加一行.像这样的东西

String newArr[][] = new String[arr.length+1][];
arr[length+1][0]= {"car"};
Run Code Online (Sandbox Code Playgroud)

任何的想法?

And*_*ner 5

您无法调整数组的大小:它们的大小在创建时是固定的.

您只能创建一个新数组并复制内容; 你可以使用Arrays.copyOf(*)方便地做到这一点:

String newArr[][] = Arrays.copyOf(arr, arr.length + 1);
// Note that newArr[arr.length] is currently null.
newArr[arr.length] = new String[] { "car" };
Run Code Online (Sandbox Code Playgroud)

但是,正如@KevinEsche在他对这个问题的评论中指出的那样,你可能会发现一个ArrayList(或者可能是其他类型的List)更方便使用:虽然这也是一个数组支持,并且需要偶尔调整该数组的大小,隐藏你的细节.


(*)的疑难杂症这里是Arrays.copyOf执行浅拷贝arr,所以要的元件的任何变化arr[i]将在元件中的反射newArr[i](对0 <= i < arr.length).如果你需要它,你可以通过遍历的元素做一个深拷贝arr,呼吁Arrays.copyOf每个.

String newArr[][] = Arrays.copyOf(arr, arr.length + 1);
for (int i = 0; i < arr.length; ++i) {
  newArr[i] = Arrays.copyOf(arr[i], arr[i].length);
}
// ...
Run Code Online (Sandbox Code Playgroud)