2016-04-20 195 views
0

我想將一個值添加到數組的末尾。我得到這個適用於具有固定長度的數組,但現在我需要使它適用於任何大小的數組。我認爲一個簡單的for循環會做到這一點,我只是無法弄清楚語法。重複數組,添加元素Java

double[] array2 = new double[array.length + 1]; 
System.arraycopy(array, 0, array2, 0, array.length); 
array2[array.length] = val; 
array = array2; 

return array2; 
+1

用戶ArrayList代替 – logger

+1

使用[''''Arrays :: copyOf'''](https://docs.oracle.com/javase/7/docs/api/java/util/Arrays)可能更容易。 HTML#copyOf%28double [],%20int%29) –

回答

4

你可能要考慮使用ArrayList你能想到的作爲動態數組。它的大小是動態的,你可以繼續添加元素而不用擔心大小。

通過將一個值添加到數組的末尾我假設您希望插入的值。你可以用這樣一個ArrayList這樣做:

ArrayList<Double>myArrayList = new ArrayList<Double>(); 
myArrayList.add(3.14); 
myArrayList.add(6.24); 

如果您希望此ArrayList轉換成數組,你可以看看here

0

嘗試以下

double[] add(double[] array, double val){ 
    double[] copy = new double[array.length + 1]; 
    System.arraycopy(array, 0, copy, 0, array.length); 
    copy[array.length] = val; 
    return copy; 
} 
0

你有兩種選擇做這個。

首先,根據@bholagabbar的說法,改用ArrayList。

選項2,您可以將數組大小加倍,將舊數組複製到新數組中(這與ArrayList在底層所做的相似)。順便說一句,增加一個額外的空間不是一個好主意來擴大數組。如果您有10個新元素並且陣列已滿,則需要將陣列展開10次,然後複製數組中的所有元素10次。如果你將數組的大小加倍,大多數情況下,你只需要展開一次數組並複製所有元素一次。