【问题标题】:Why C# list was implemented using array and not a linked list [duplicate]为什么 C# 列表是使用数组而不是链表实现的 [重复]
【发布时间】:2018-07-07 17:23:43
【问题描述】:

我浏览了 C# 中 List 的代码

https://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs,cf7f4095e4de7646

为什么列表实现为数组而不是链表?

我知道在使用双链表与数组比较时,内存是一个问题,但是当您将节点删除/添加到列表时,您对性能的影响会较小。

你能解释一下吗? 谢谢

【问题讨论】:

  • 如何按索引访问链表?
  • 除其他原因外:它旨在(通常)替换 ArrayList。
  • 我想添加和删除项目,这是列表没有空间限制的目标,即我不必一直调整大小,就像在数组中一样。是的,访问数据很重要,但删除和添加也很重要,我想迭代列表,而不仅仅是按索引访问。
  • @OrelEraki 谢谢我找不到它。
  • 特别看汉斯的言论;他们确实回答了这个问题..

标签: c# list collections


【解决方案1】:

首先,C#中有一个LinkedList

关于数组和链表的区别,数组提供了对集合中元素的快速随机访问,而链表中的元素不能随机访问,只能顺序访问,访问元素需要0(n)时间。尽管使用 LinkedList 有一些优点。 This article 提供详细对比。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-21
    • 2018-10-23
    • 2016-11-30
    • 2016-04-24
    • 2011-10-04
    • 2015-09-29
    • 2017-07-10
    • 2011-09-03
    相关资源
    最近更新 更多