C# 什么时候人们更喜欢数组、LinkedList或ArrayList而不是List<;T>;?
除了遗留代码之外,使用这些数据类型还有什么意义吗?使用字典或图形等其他数据类型是可以理解的,因为它们提供了额外/不同的功能。但array、LinkedList或ArrayList的功能较少,有时性能比List差(ArrayList在值类型中的内存效率较低) 那为什么要用它们呢 注意:这不是一个基于意见的问题。我只想知道这些类型的用例 另一个注意事项:我知道链表的O(1)插入时间。我在问什么时候应该在标准列表上使用它,标准列表有O(1)个访问时间?C# 什么时候人们更喜欢数组、LinkedList或ArrayList而不是List<;T>;?,c#,arrays,list,arraylist,linked-list,C#,Arrays,List,Arraylist,Linked List,除了遗留代码之外,使用这些数据类型还有什么意义吗?使用字典或图形等其他数据类型是可以理解的,因为它们提供了额外/不同的功能。但array、LinkedList或ArrayList的功能较少,有时性能比List差(ArrayList在值类型中的内存效率较低) 那为什么要用它们呢 注意:这不是一个基于意见的问题。我只想知道这些类型的用例 另一个注意事项:我知道链表的O(1)插入时间。我在问什么时候应该在标准列表上使用它,标准列表有O(1)个访问时间? 什么时候使用更好?(关于ArrayList和ar
什么时候使用更好?(关于ArrayList和array的问题仍然存在)
ArrayList
?当然:基本上永远不要使用它(除非你不想迁移一些遗留代码,或者因为有人不明智地使用了BinaryFormatter
),所以不能迁移)
然而,LinkedList
不属于同一类别-它是利基,但由于插入/删除等成本较低,因此有其用途,而不像List
需要移动数据才能执行插入/删除。在大多数情况下,您可能不需要该功能,因此:除非您需要,否则不要使用它?
下面是与列表
实现不同的一个列表。当列表中的项目需要维护特定的顺序(因此是下一个和上一个引用)时,可以使用它
表示双链接列表
LinkedList
提供了类型为LinkedListNode
的独立节点,因此插入和删除是O(1)操作
您可以删除节点并将其重新插入同一列表或另一列表中,这样就不会在堆上分配额外的对象。由于列表还维护内部计数,因此获取count属性是一个O(1)操作
LinkedList
对象中的每个节点都属于LinkedListNode
类型。由于LinkedList
是双重链接的,因此每个节点都指向前一个节点,并向后指向前一个节点
ArrayList
是过去使用的一种不推荐使用的实现。更喜欢在任何新代码中列出通用实现
作为一个泛型集合,List
实现了泛型IEnumerable
接口,可以在LINQ中轻松使用
ArrayList
属于C#没有泛型的时代。它被弃用,取而代之的是列表
。在针对.NET>=2.0的新代码中不应使用ArrayList
,除非必须与使用它的旧API接口
数组是一个固定大小的集合,它支持多个维度。对于简单的插入和迭代,它是三种方法中效率最高的。所有容器都有优点和缺点。。。。从复杂性O(n)到排序功能,您指的是哪个
List
?您无法实例化列表,因此没有列表。@Omid.N um。。。是的,您可以(实例化列表
);它不是抽象的(你在考虑Java吗?注意这个问题有一个C#标记,所以我在这里说的是.NET)啊!对不起,我以为这是一个java问题。