簡體   English   中英

如何生長二維陣列

[英]How to grow a 2D array

我有一個2D陣列,我想擴大它。 我已將其復制到新數組中,但是如何用上一個數組中的內容填充它呢?

if (row == data.length) {

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

}

您是否要擴展它,然后在代碼的后期階段繼續進行操作?

例如:

您有一個大小為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陣列。 這是某種類型的數組的數組,那么您的代碼也應該適用於2D數組。

但是,新創建的數組插槽中將存在null值(例如,您有2D ComplexNumber類的數組,並且如果嘗試訪問這些類並調用諸如GetImaginaryValue()之類的方法),則會得到null異常。

正如xscanpix所提到的,如果我們認為您做的是正確的,那么您的代碼就可以工作。 如果不是這種情況,請編輯您的問題。

如果不是您要的東西,我為您的誤會表示歉意。 我不喜歡您,因為您是SO的新用戶(像我一樣),並且可能剛剛開始使用Java。

這段代碼怎么不按照您的意願去做? Arrays.copyOf的Java API文檔指出,它返回:

'原始數組的副本,被截斷或用null填充以獲取指定的長度' (取決於數組的類型)


編輯:

請發布更多代碼,否則將很難給出合理的答案。

這句話是什么意思? “我已將其復制到新數組中,但是如何用上一個數組中的內容填充它”

您可以嘗試以下代碼來實現此任務。 dataStart對應於源數組中的起始位置,而newDataStart對應於目標數組中的起始位置。

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

如果需要動態擴展數組,可以查看ArrayListVector

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM