【发布时间】:2010-01-11 10:56:38
【问题描述】:
哪个内存效率更高?
哪一个处理 1000000 个项目的速度更快?
有什么更好的吗?
【问题讨论】:
哪个内存效率更高?
哪一个处理 1000000 个项目的速度更快?
有什么更好的吗?
【问题讨论】:
List<T> 通常比使用ArrayList 更可取,因为它是一个类型安全的集合。这意味着您可以获得构建时间类型的安全性。对于值类型,它的内存效率也更高,因为 ArrayList 中的条目将被装箱,因为它是类型对象的列表:
例如:将整数添加到List<int> 将使用int[] 作为底层数据结构将数据放在堆上。将整数添加到ArrayList 会将数据放在堆上,但由于底层数据结构是object[],因此必须将数据装箱,这意味着还必须将指针存储在需要更多内存的堆上被分配。
ArrayList 和 List<T> : class(引用类型列表)的内存分配完全相同。
【讨论】:
List<int> 会将数据放在堆上,作为列表内部数组的元素。 List<int> 和 ArrayList 的 int 之间的区别是,正如您所说,元素不会被装箱在通用列表中。
List<T>优于ArrayList:
特定类型(Object 除外)的 Array 比 ArrayList 具有更好的性能,因为 ArrayList 的元素属于 Object 类型,因此,装箱和拆箱通常在存储或检索值类型时发生。但是,如果不需要重新分配,List 可以具有与相同类型的数组类似的性能;也就是说,如果初始容量是列表最大大小的良好近似值。
【讨论】: