如何使用java增加2d数组中的行数

时间:2013-06-28 22:37:58

标签: java

我需要使用java将2 * 3数组转换为6 * 3数组。知道我该怎么做吗?我是Java的新手所以感谢任何帮助。

4 个答案:

答案 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.arrayCopyArrays.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)

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