如何增长2D数组

时间:2015-03-13 16:15:14

标签: java arrays

我有一个2D数组,我想增长它。我已将其复制到一个新数组中,但如何用前一个数组中的内容填充它?

if (row == data.length) {

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

}

3 个答案:

答案 0 :(得分:1)

您是否正在尝试增长它,然后在代码的后续阶段继续操作它?

例如:

你有一个大小为4的数组,你把0 1 2 3放入其中,现在它已经满了,你想要加倍大小,然后继续添加7 8 9之类的数字。

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

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

另一方面,如果你提到你想要一个2D阵列。这是某种类型的数组数组,那么你的代码也适用于2D数组。

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

正如xscanpix所提到的,如果我们假设您做的是正确的,那么您的代码是可行的。如果不是这样,请编辑您的问题。

如果它不是你要找的东西我为误解而道歉。我已经告诉你,你已经成为了SO的新用户(就像我一样),而且可能刚刚开始使用Java。

答案 1 :(得分:0)

这段代码怎么做不到你想要的呢? Arrays.copyOf的java API文档声明它返回:

'原始数组的副本,用空值截断或填充以获得指定的长度' (取决于数组的类型)


修改

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

答案 2 :(得分:0)

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

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

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

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