【问题标题】:List or ArrayList?(lots of items)List 还是 ArrayList?(很多项目)
【发布时间】:2010-01-11 10:56:38
【问题描述】:

哪个内存效率更高?
哪一个处理 1000000 个项目的速度更快?
有什么更好的吗?

【问题讨论】:

    标签: .net list arraylist


    【解决方案1】:

    List<T> 通常比使用ArrayList 更可取,因为它是一个类型安全的集合。这意味着您可以获得构建时间类型的安全性。对于值类型,它的内存效率也更高,因为 ArrayList 中的条目将被装箱,因为它是类型对象的列表:

    例如:将整数添加到List<int> 将使用int[] 作为底层数据结构将数据放在堆上。将整数添加到ArrayList 会将数据放在堆上,但由于底层数据结构是object[],因此必须将数据装箱,这意味着还必须将指针存储在需要更多内存的堆上被分配。

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

    【讨论】:

    • @Charlie:将整数添加到List<int> 会将数据放在堆上,作为列表内部数组的元素。 List<int>ArrayListint 之间的区别是,正如您所说,元素不会被装箱在通用列表中。
    【解决方案2】:

    List<T>优于ArrayList

    特定类型(Object 除外)的 Array 比 ArrayList 具有更好的性能,因为 ArrayList 的元素属于 Object 类型,因此,装箱和拆箱通常在存储或检索值类型时发生。但是,如果不需要重新分配,List 可以具有与相同类型的数组类似的性能;也就是说,如果初始容量是列表最大大小的良好近似值。

    来自ArrayList and List Collection Types

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多