列表、排序列表和数组列表之间有啥区别? (C#)

Posted

技术标签:

【中文标题】列表、排序列表和数组列表之间有啥区别? (C#)【英文标题】:What are the differences between a list, sorted list, and an array list? (c#)列表、排序列表和数组列表之间有什么区别? (C#) 【发布时间】:2016-01-29 03:31:12 【问题描述】:

根据我的阅读,列表、排序列表和数组列表有很多共同点,但同时也有一些不同之处。

我想知道:初学者应该知道它们之间的区别是什么?为什么选择一个而不是另一个?在代码中使用它们时要养成哪些好习惯?

感谢您的宝贵时间。

【问题讨论】:

尝试阅读一些书籍。例如 - c# 深度 manning.com/books/c-sharp-in-depth-third-edition 【参考方案1】:

来自 MSDN:

一个 SortedList 元素可以通过它的键来访问,就像一个元素在 任何 IDictionary 实现,或其索引,如 任何 IList 实现。

一个 SortedList 对象在内部维护两个数组来存储 列表的元素;也就是说,一个数组用于键,另一个数组 关联值的数组。每个元素都是一个键/值对 可以作为 DictionaryEntry 对象访问。键不能为空,但 一个值可以。

对于选择最佳收藏,您可以查看this。

【讨论】:

在内部使用数组时,写入的列表 O(n) 如何?我想这是最坏的情况,当它必须调整数组大小时..? 非常漂亮的床单!我会添加“B-Tree”和“SkipList”。为了我的需要,我必须维护一个有序的时间戳列表,所以当我在中间插入一个新的时,如果我使用 LinkedList,找到正确的插入位置是 O(n)。所以我使用了一个 SkipList,它是 O(log n) :en.wikipedia.org/wiki/Skip_list 我自己在正确位置插入的性能比较要好得多。 你知道空间效率吗?【参考方案2】:

使用 List 和 SortedList 您可以指定元素的类型,因此通常更易于使用。 ArrayList 是遗留的,可以保存对象,但您必须自己将它们转换为包含的类型。

SortedList 顾名思义是一个类型为 T 的排序列表。当你想要一个排序列表时使用它。当不需要排序或 T 的一般集合就足够或您提供自己的排序机制时,请使用 List。 SortedList 在添加项目时会比 List 慢,所以只在必要时使用它。

【讨论】:

以上是关于列表、排序列表和数组列表之间有啥区别? (C#)的主要内容,如果未能解决你的问题,请参考以下文章

Python元组与c语言的数组有啥区别吗

Python元组与c语言的数组有啥区别吗

python中列表和元组之间有啥区别?

python中元组和列表有啥区别

List和List之间有啥区别

使用包含或循环列表之间有啥大区别吗?