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

时间:2016-08-24 07:03:42

标签: java arrays multidimensional-array

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

String arr[][]=getTwoDArray();

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

String newArr[][] = new String[arr.length+1][];
arr[length+1][0]= {"car"};

有什么想法吗?

1 个答案:

答案 0 :(得分: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" };

然而,正如@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);
}
// ...