能否提供。 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

上述排序顺序是否正确?如果不能,请重新安排一下吗?如果有人可以在上述列表的排序顺序中添加更多集合,我们将不胜感激。

【问题讨论】:

HashtableDictionary 或多或少是等价的,后者是通用的,如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 基于查找时间的排序列表?的主要内容,如果未能解决你的问题,请参考以下文章

集合:Collection接口(常用方法遍历)

.NET中的HashSet

java容器

Mybatis 高级结果映射 ResultMap Association Collection

Java容器

Collection 集合框架