.NET具有许多复杂的数据结构。不幸的是,它们中的一些非常相似,我不总是确定何时使用一个,何时使用另一个。我的大多数C#和Visual Basic书籍都在一定程度上谈论它们,但是它们从未真正涉及任何细节。
Array,ArrayList,List,Hashtable,Dictionary,SortedList和SortedDictionary有什么区别?
哪些是可枚举的(IList-可以执行“ foreach”循环)?哪些使用键/值对(IDict)?
那内存占用呢?插入速度?检索速度?
还有其他值得一提的数据结构吗?
我仍在寻找有关内存使用和速度(Big-O表示法)的更多详细信息。
从我的头顶上:
Array*-代表老式的内存阵列-有点像普通type[]阵列的别名。可以列举。不能自动增长。我会假设插入和检索速度非常快。
ArrayList-自动增长数组。增加更多的开销。可以枚举,可能比普通数组慢,但仍然非常快。这些在.NET中使用很多
List-我的最爱之一-可以与泛型一起使用,因此您可以使用强类型数组,例如List 。除此之外,行为非常像ArrayList
Hashtable-普通的旧哈希表。O(1)至O(n)最坏的情况。可以枚举值和键属性,并执行键/值对
Dictionary -与上述相同,仅通过泛型强类型输入,例如 Dictionary<string, string>
SortedList-排序后的通用列表。插入速度慢,因为它必须弄清楚放置位置。可以枚举。由于不必诉诸检索,因此可能相同,但是删除将比普通的旧列表慢。
我倾向于使用List和Dictionary所有的时间-一旦你开始使用它们泛型强类型,它真的很难回到标准的非通用的。
还有许多其他数据结构- KeyValuePair您可以使用它们来做一些有趣的事情,还有一个SortedDictionary也可以使用。 问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。