我需要使用java将2 * 3数组转换为6 * 3数组。知道我该怎么做吗?我是Java的新手所以感谢任何帮助。
答案 0 :(得分:8)
你做不到。一旦分配,数组具有固定的大小。
您必须分配一个新数组并将旧数组的内容复制到新数组中。
一种解决方案是使用Arrays.copyOf()
来处理您的副本:
X[][] newArray = Arrays.copyOf(original, 6);
// Necessary: empty spaces are filled with null by default
for (int index = original.length; index < 6; index++)
newArray[index] = new X[3];
或者选择简单的路线并使用List
代替(已建议的ArrayList
)。他们随需求扩大。
如果你想要一个“二维通用数组”,Guava有Table
,你可以用它来模仿一个二维数组,例如:
final Table<Integer, Integer, X> mockArray = HashBasedTable.create();
答案 1 :(得分:3)
您无法更改数组的大小。但是,您可以创建一个维度为6 * 3的新数组,复制数据(System.arrayCopy
,Arrays.copyOf
),并返回对新数组的引用。
如果您最初不确定数组大小,请使用ArrayList代替。
答案 2 :(得分:2)
阵列的大小是固定的。通常,当您需要像这样增长的元素集合时,您应该使用List
而不是数组(可能是ArrayList
,尽管您应该选择最适合您的实现)。即。
X[][] // fixed number of rows and columns
变为
List<X[]> // the number of rows is not fixed anymore
(当然,如果您需要更改这两个尺寸,请使用List<List<X>>
)
答案 3 :(得分:1)