2015-03-13 43 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。