开发者社区> 问答> 正文

.NET数据结构:ArrayList,List,HashTable,Dictionary,Sorte

.NET具有许多复杂的数据结构。不幸的是,它们中的一些非常相似,我不总是确定何时使用一个,何时使用另一个。我的大多数C#和Visual Basic书籍都在一定程度上谈论它们,但是它们从未真正涉及任何细节。

Array,ArrayList,List,Hashtable,Dictionary,SortedList和SortedDictionary有什么区别?

哪些是可枚举的(IList-可以执行“ foreach”循环)?哪些使用键/值对(IDict)?

那内存占用呢?插入速度?检索速度?

还有其他值得一提的数据结构吗?

我仍在寻找有关内存使用和速度(Big-O表示法)的更多详细信息。

展开
收起
保持可爱mmm 2020-01-16 16:32:47 435 0
1 条回答
写回答
取消 提交回答
  • 从我的头顶上:

    Array*-代表老式的内存阵列-有点像普通type[]阵列的别名。可以列举。不能自动增长。我会假设插入和检索速度非常快。

    ArrayList-自动增长数组。增加更多的开销。可以枚举,可能比普通数组慢,但仍然非常快。这些在.NET中使用很多

    List-我的最爱之一-可以与泛型一起使用,因此您可以使用强类型数组,例如List 。除此之外,行为非常像ArrayList

    Hashtable-普通的旧哈希表。O(1)至O(n)最坏的情况。可以枚举值和键属性,并执行键/值对

    Dictionary -与上述相同,仅通过泛型强类型输入,例如 Dictionary<string, string>

    SortedList-排序后的通用列表。插入速度慢,因为它必须弄清楚放置位置。可以枚举。由于不必诉诸检索,因此可能相同,但是删除将比普通的旧列表慢。

    我倾向于使用List和Dictionary所有的时间-一旦你开始使用它们泛型强类型,它真的很难回到标准的非通用的。

    还有许多其他数据结构- KeyValuePair您可以使用它们来做一些有趣的事情,还有一个SortedDictionary也可以使用。 问题来源于stack overflow

    2020-01-16 16:33:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何使用Tair增强数据结构构建丰富在线实时场景 立即下载
Apache Flink 流式应用中状态的数据结构定义升级 立即下载
低代码开发师(初级)实战教程 立即下载