一个方法在java中返回一个二维数组。我想再添加一个元素。不确定如何将其复制到另一个新的二维阵列的语法&再添加一个元素。有人有想法吗?
String arr[][]=getTwoDArray();
现在我想再添加一行。像这样的东西
String newArr[][] = new String[arr.length+1][];
arr[length+1][0]= {"car"};
答案 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);
}
// ...