代码之家  ›  专栏  ›  技术社区  ›  abhishek

为什么SortedList和List使用数组,为什么LinkedList使用得不多?

  •  5
  • abhishek  · 技术社区  · 14 年前

    在我看来, List 基本上是使用 LinkedList ,而 Array 实现为连续块。我总是用 列表 因为它是在 Generic 因为我认为 -但我错了。

    列表 T[] ). 有很多 Array.Copy 在操纵 列表 . 例如,当你使用 Insert 列表

    我看到了 SortedList 有序列表 有序列表 列表 发生?

    我也想知道为什么 列表 链表

    4 回复  |  直到 10 年前
        1
  •  15
  •   Hans Passant    14 年前

    是的,SortedList是O(n)表示插入。小心使用。

    最大的原因是现代电脑设计。CPU缓存是 非常

    数组具有无与伦比的缓存性能,当您迭代它时,很可能下一个元素已经在缓存中了。链表给出的可能性很小,如果是这种情况,下一项基本上是在一个随机地址。这是昂贵的,它拖延了处理器,等待内存赶上。可能有几百个周期。

        2
  •  3
  •   James Curran    14 年前

    因为大多数集合不需要经常在中间插入。但它们确实需要通过索引器直接访问。

        3
  •  2
  •   Ani    14 年前

    如果要在内存中创建单一类型的集合,请执行以下操作:

    1. 最常见的变异操作是 附加 集合末尾的项目。
    2. 快速检索 指数 是必不可少的。

    List<T> 可能是你最好的选择。 LinkedList<T> 当(2)和(3)不适用时,可能是更好的选择。

        4
  •  1
  •   Dmitry Karpezo    14 年前

    在现实生活中 列表 不打电话 数组。复制 列表

    如果你经常插入项目,请使用链表。如果您主要是添加项,并且需要有效地迭代它们,请使用 列表