我剛剛創建了一個比我以前的數組大一個的新數組,我想將第一個數組中的值複製到我的新數組中。如何將新值添加到新數組的最後一個索引?給數組添加一個值?
這是我已經試過:
public void addTime(double newTime) {
if (numOfTimes == times.length)
increaseSize();
times[numOfTimes] = newTime;
}
我剛剛創建了一個比我以前的數組大一個的新數組,我想將第一個數組中的值複製到我的新數組中。如何將新值添加到新數組的最後一個索引?給數組添加一個值?
這是我已經試過:
public void addTime(double newTime) {
if (numOfTimes == times.length)
increaseSize();
times[numOfTimes] = newTime;
}
要將新的值設置爲最後一個索引,你可以做
times[times.length - 1] = newTime;
數組索引從0..n-1
去。
array[array.length - 1]
將解決數組末尾的值。
我會建議嘗試使用對象,如java.util.List
而不是原始數組。那麼你可以這樣做: times.add(newTime)
它處理你的尺寸。
數組的最後一項總是在myArray.length - 1
。在你的情況下,times數組中的最後一個元素是times[times.length - 1]
。有關數組的更多信息,請參閱http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html。
但更重要的是:如果您嘗試更改陣列的容量,那麼最有可能使用錯誤的數據結構作爲該作業。看看Oracle的Introduction to Collections
(尤其是ArrayList
類,如果您需要類似數組的索引來訪問元素)。
爲什麼你不想要一個java.util.ArrayList這個需求?實際上,不需要管理它的大小。你只需簡單地這樣做:
List<Double> list = new ArrayList<Double>();
list.add(newTime);
考慮Arrays.copyOf如果使用數組是一種約束:
import java.util.Arrays;
...
private void increaseSize() {
// Allocate new array with an extra trailing element with value 0.0d
this.times = Arrays.copyOf(times, times.length + 1);
}
...
需要注意的是,如果你經常做這種類型的陣列管理和不可預測的方式,您可能希望考慮Java Collection Framework類之一,如ArrayList。 ArrayList
的設計目標之一是管理大小管理,就像JVM本身管理內存管理一樣。
我開發了一個在線可執行示例here。
爲什麼不使用System.arraycopy函數。
increaseSIze()
{
double [] temp = new double[times.lebgth+1];
System.arrayCopy(times,0,temp,0,times.length);
times=temp;
}
之後,你有1次增加大小的時間數組。
哇,這裏有很多很棒的答案。你確定**沒有**有任何幫助嗎? – btiernay