2010-01-11 60 views

回答

13

A List<T>通常優於使用ArrayList,因爲它是一個類型安全的集合。這意味着您可以獲得構建時間類型安全性。它也更存儲器高效爲值類型,因爲在一個ArrayList條目將被加框,因爲它的一種類型的對象的列表:

例如:添加的整數到List<int>將穿上使用堆的數據的int[]作爲底層數據結構。向ArrayList添加整數會將數據放在堆上,但由於底層數據結構爲object[],因此必須將數據裝箱,這意味着指針也必須存儲在堆上,這需要分配更多的內存。

ArrayListList<T> : class(引用類型列表)的內存分配完全相同。

+0

@Charlie:將一個整數添加到'List '將數據*放在堆*上,作爲列表內部數組的一個元素。正如你所說的,'List '和''Array''的ArrayList之間的區別就是,元素不會在通用列表中被裝箱。 – LukeH

+0

@Luke,謝謝更新。 – Charlie

5

List<T>ArrayList更好:

特定類型(比對象其他)陣列具有比一個ArrayList更好的性能,因爲ArrayList中的元素是Object類型的,因此,裝箱和取消裝箱通常在存儲或檢索值類型時發生。但是,如果不需要重新分配,則List可以具有與相同類型的數組類似的性能;也就是說,如果初始容量是列表最大大小的很好近似值。

ArrayList and List Collection Types