[英]Object arraylist initialization in Java
我有一個名為Carriage
的對象。 當我初始化它時,我必須發送一些座位給構造函數:
Carriage newCarriage = new Carriage(30); //30=num of seats
現在,我創建了一個名為Train
的新類,這是它的構造函數:
public class Train {
ArrayList<Carriage> trainCarriageList;
Train(int baseTrainSize,int baseCarriageSize){
trainCarriageList= new ArrayList<Carriage>(baseTrainSize);
}
}
現在的問題是:如何正確初始化大小為“ baseTrainSize”的火車數組列表以及每個大小為baseCarriageSize的Carriage
?
當您將大小(x)傳遞給ArrayList
的構造函數時, 請勿使用x個新元素對其進行初始化,而應使用完全0個元素對其進行初始化。 容量為x。 ArrayList
的內部實現是一個常規數組,其大小為x 。 填充數組后,數組列表將初始化一個2x大小的新數組,並將x大小的數組復制到其中。 這是一個昂貴的步驟。 通過聲明大小,如果您確切知道ArrayList
中將包含多少個元素,則ArrayList
此步驟。
您可以為此使用循環。 但是從邏輯上講,僅循環添加所有用相同值初始化的元素對我來說是沒有意義的。 而是根據需要添加一個構造函數以使用默認值。 盡管如果您確實需要這樣做,請執行以下操作:
for(int i=0 ; i < baseTrainSize; i++) {
Carriage carriage = new Carriage(30);
trainCarriageList.add(carriage);
}
ArrayList<Carriage>
在您不將其添加到集合之前不包含任何Carriage
。
這意味着在為容器初始化容器時,您不必在意初始化托架有多少個座位。
trainCarriageList = new ArrayList<Carriage>(baseTrainSize);
...
Carriage carriage = new Carriage(30);
trainCarriageList.add(carriage);
您可以使用Class Train
工具清單。 這樣,您的火車對象實際上就是Carriage
的列表。
用這個:
public class Train {
ArrayList<Carriage> trainCarriageList;
Train(int baseTrainSize,int baseCarriageSize){
// initialize the List with the base size:
trainCarriageList= new ArrayList<Carriage>(baseTrainSize);
// initialize each list element with it's own base size:
for(int i=0;i<baseTrainSize;i++){
trainCarriageList.set(i, new Carriage(baseCarriageSize));
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.