Jon*_*eet 82
好吧,List<T>
基本上是一个数组支持,通常大于当前的项目数.这些元素放在一个数组中,当旧的数组空间不足时,会创建一个新数组.这对于索引访问来说很快,但在删除或插入列表中或开头的元素时速度很慢.添加/删除列表末尾的条目相当便宜.
LinkedList<T>
是一个双向链表 - 每个节点都知道它的前一个条目和下一个条目.这对于在特定节点(或头部/尾部)之后/之前插入是快速的,但是在索引访问时速度慢.
LinkedList<T>
将通常采取更多的内存比List<T>
,因为它需要对所有这些下一个/前一个的参考空间-和数据将可能有的参考局部性较少,因为每个节点是一个单独的对象.另一方面,a List<T>
可以具有比其当前需要大得多的后备阵列.
A List<T>
实际上是一个数组,意味着它的Add
操作在结尾是O(1)而在前面是O(n),但是你可以在O(1)中索引它.LinkedList<T>
正如它所说,A 是一个链表.由于它是双重链接的,你可以在O(1)中向前面或后面添加项目,但索引到它是O(n).