2012-04-12 54 views
2

可以說我有這樣的事情:如何將元素/對象更快地添加到列表中?

MySomething element1 = new MySomething(stuff); 
MySomething element2 = new MySomething(stuff); 
MySomething element3 = new MySomething(stuff); 
MySomething element4 = new MySomething(stuff); 
MySomething element5 = new MySomething(stuff); 
//and so on... 

現在可以說,我有一個列表或東西的地方,我想所有的元素添加到列表中。他們我必須這樣做:

myList.add(element1); 
myList.add(element2); 
//and so on... 

這將需要很長時間。如果我有100多個元素,那麼它需要永久^^有沒有更快的方法來將大量創建的「元素」添加到列表中?我知道

myList.add(new MySomething(stuff)); 

但讓我們說,元素已經在這裏創建像這裏的例子。如何更快地將它們添加到列表中?謝謝:)

編輯:好吧,我不得不說,名稱並不總是element1-100它有時候element23,element454等等。元素之後的數字並不總是順序的。是的,他們都是相同的類型。

回答

0

每增加一個元素。如果他們都是同一類型的,你知道如何許多你只需要使用一個循環最初創建磁盤陣列:

MySomething[] items = new MySomething[N]; 
for(int i = 0; i < N; i++) 
{ 
    items[i] = new MySomething(stuff); 
} 

後,放入所有項目名單:

list.AddRange(items); 
+0

代替循環在所述第二步驟中的,可以使用的List.AddRange(T []數組)代替。 – ProgramFast 2017-11-20 15:15:40

0

如果您事先知道將要添加到列表中的元素的數量,可以在構造函數中設置列表的大小 - 這樣可以避免列表動態調整大小,因爲它會填滿,例如,

MySomething element1 = new MySomething(stuff); 
.... 
MySomething element100 = new Something(stuff); 

List<MySomething> myList = new List<MySomething>(100); 
-1
var list = Enumerable 
    .Range(1,100) 
    .Select(i => new MySomething(stuff)) 
    .ToList();