2015-03-13 41 views
0

我有一个二维数组,我想增长它。我已经将它复制到一个新的数组中,但是如何使用前一个数组中的内容填充它?如何生长二维数组

if (row == data.length) { 

    newData = Arrays.copyOf(data, 2 * data.length); 

} 
+0

使用[arraycopy](http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#arraycopy(java.lang.Object中,%20int,%20java.lang。对象%20int,%20int))? – tnw 2015-03-13 16:16:40

+0

您是否尝试过使用ArrayList的ArrayList?它是动态数组/? WOuld让你的生活变得轻松 – 2015-03-13 19:11:02

回答

0

这段代码是不是做你想做的事情?对于Arrays.copyOf Java API的文档说,它返回:

“原始数组的副本,截取或用null填充以获得指定的长度”(取决于阵列的类型)


编辑:

请发布更多的代码,否则将很难给出合理的答案。

0

这句话是什么意思? “我已将它复制到一个新的阵列中,但是如何使用前一个阵列的内容填充它”

您可以尝试以下行来实现此任务。 dataStart对应于源数组中的起始位置,newDataStart对应于目标数组中的起始位置。

System.arraycopy(data, dataStart, newData, newDataStart, data.length); 

如果您需要动态地扩展您的数组,你可以看看ArrayListVector

1

您是否试图发展它,然后在代码的后续阶段继续操作它?

例如:

你有大小4的数组,你把0 1 2 3它,现在它的全部,你要扩大一倍,然后继续像这7 8 9加号。

如果是这种情况,所有您需要做的就是将newData分配给您之前的数组名,上面的例子是'data'。

if (row == data.length) 
{ 
    newData = Arrays.copyOf(data, 2*data.length); 
    data = newData; //assigns the newArray to the previous variable name 
} 

如果另一方面你提到你想要一个2D数组。这是一个特定类型的数组的数组,那么你的代码也应该适用于二维数组。

然而,在新创建的数组槽中会有空值(例如,您有一个ComplexNumber类的二维数组,如果尝试访问这些类并调用像GetImaginaryValue()方法),您将得到一个空异常。

正如xscanpix提到的那样,如果我们假定你做的是正确的,那么你的代码就可以工作。如果不是这样,请编辑您的问题。

如果这不是你要找的,我很抱歉误会。我要通过代表你已经知道你是一个新用户(像我一样),并且可能只是开始使用Java。