2

我需要使用 java 将 2 * 3 数组转换为 6 * 3 数组。知道我该怎么做吗?我是 Java 新手,因此不胜感激。

4

4 回答 4

9

你不能。数组一旦分配,就具有固定的大小。

您必须分配一个新数组并将旧数组的内容复制到新数组中。

一种解决方案是使用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];

或者走简单的路线并使用 aList代替(ArrayList如已经建议的那样)。他们按需扩展。

如果你想要一个“二维通用数组”,GuavaTable可以使用它来模仿二维数组,例如:

final Table<Integer, Integer, X> mockArray = HashBasedTable.create();
于 2013-06-28T22:40:59.617 回答
3

你不能改变数组的大小。但是,您可以创建一个维度为 6 * 3 的新数组,将数据复制到 ( System.arrayCopy, Arrays.copyOf) 上,然后返回对新数组的引用。

如果您最初不确定数组大小,请改用ArrayList

于 2013-06-28T22:39:09.100 回答
2

数组的大小是固定的。一般来说,当你需要一个元素的集合来像这样增长时,你应该使用Lists 而不是数组(也许是一个ArrayList,尽管你应该选择最适合你的实现)。IE

X[][]  // fixed number of rows and columns

变成

List<X[]>  // the number of rows is not fixed anymore

(当然,如果您需要更改两个维度,请使用 a List<List<X>>

于 2013-06-28T22:39:45.563 回答
1

数组具有固定大小,一旦在内存中分配就不能更改。您应该使用某种类型的List代替,例如ArrayList. 它们的大小可以动态增加或减少,如果您不想设置,您甚至不必设置它,您可以添加元素,甚至不必担心它。

于 2013-06-28T22:40:14.153 回答