哪一个更节省内存?
哪一个用1000000项更快地工作?
还有什么更好的吗?
答案 0 :(得分:13)
List<T>
通常比使用ArrayList
更受欢迎,因为它是一种类型安全的集合。这意味着您可以获得构建时类型安全性。它对值类型的内存效率也更高,因为ArrayList
中的条目将被装箱,因为它是一个类型对象的列表:
例如:向List<int>
添加整数将使用int[]
作为基础数据结构将数据放在堆上。向ArrayList
添加整数会将数据放在堆上,但由于底层数据结构是object[]
,因此必须将数据装箱,这意味着指针也必须存储在堆上这需要更多的内存分配。
ArrayList
和List<T> : class
(参考类型列表)的内存分配完全相同。
答案 1 :(得分:5)
List<T>
优于ArrayList
:
特定类型(除Object之外)的Array具有比ArrayList更好的性能,因为ArrayList的元素是Object类型,因此,在存储或检索值类型时通常会发生装箱和取消装箱。但是,如果不需要重新分配,List可以具有与相同类型的数组类似的性能;也就是说,如果初始容量是列表最大大小的良好近似值。