能否提供。 NET Collection 基于查找时间的排序列表?
Posted
技术标签:
【中文标题】能否提供。 NET Collection 基于查找时间的排序列表?【英文标题】:Can you provide. NET Collection's sorted order list on basis of lookup time? 【发布时间】:2011-10-30 11:10:11 【问题描述】:我只是在互联网上搜索各种 .NET 集合的优缺点。我发现了以下几点
-
在查找值的上下文中,字典比 List 更快。
HashSet 在查找值的上下文中比 List 更快。
在查找值的上下文中,字典比 Hashtable 更快。它们都不能保证保持项目的顺序。
我读到 Hashset 是 .NET 中的禁食集合
所以我得出以下 .NET 集合的排序顺序
-
哈希集
字典
哈希表
列表
数组列表
对于上述排序顺序,我使用了以下链接
What .NET collection provides the fastest search http://cidamon.com/blog/solution/27/dictionary-hashtable-and-hashset http://www.dotnetperls.com/dictionary-time c# When should I use List and when should I use arraylist? http://www.dotnetperls.com/hashtable .NET HashTable Vs Dictionary - Can the Dictionary be as fast? http://www.codeproject.com/Answers/197792/Hashtable-and-List-in-Csharp.aspx#answer1除了上述问题之外,我还发现了一些我想分享的有用链接
What is the Generic version of a Hashtable? Why is Dictionary preferred over hashtable? Silverlight and ArrayList上述排序顺序是否正确?如果不能,请重新安排一下吗?如果有人可以在上述列表的排序顺序中添加更多集合,我们将不胜感激。
【问题讨论】:
Hashtable
和Dictionary
或多或少是等价的,后者是通用的,如Why Dictionary is preferred over hashtable in C#? 中所述。 Dictionary
不保留其元素的顺序:其 MSDN page 声明“返回项目的顺序未定义。”。
【参考方案1】:
这取决于如何您执行查找。 这就是为什么有这么多不同系列的原因之一。另一个是插入操作的特点。
所有集合都有特定的用途。如果您有查找键,那么 Dictionaray<Tkey,Telement>
比搜索 List<T>
或 Hashset<T>
更快(除非对象是键)。
如果你有一个索引,List<T>
比 Dictionary 更快,而数组甚至更快。
如果查找需要找到完全满足给定要求的所有对象。例如,整数集合中的所有整数,其中 10
因此,在查找性能方面没有固定的顺序。这取决于查找的特性。
查找性能只说明了部分情况。必须将特征集作为一个洞来分析,才能找到给定任务的集合。
你要插入很多插页 如何执行查找 是否需要排序是一些让我想起的东西
【讨论】:
【参考方案2】:我觉得这篇文章很有用C#/.NET Fundamentals: Choosing the Right Collection Class
【讨论】:
【参考方案3】:SortedDictionary 也可以添加到列表中,因为它会按顺序保留元素。
谢谢
【讨论】:
以上是关于能否提供。 NET Collection 基于查找时间的排序列表?的主要内容,如果未能解决你的问题,请参考以下文章