C# 我应该为10项或更少的收藏使用词典,还是有更好的选择?

C# 我应该为10项或更少的收藏使用词典,还是有更好的选择?,c#,.net,data-structures,collections,dictionary,C#,.net,Data Structures,Collections,Dictionary,我有一个对象列表,我需要尽快找到一个对象(通过它的name属性)。我应该使用什么数据结构?我知道我可以使用字典,但列表中的项目不会超过10个,如果我没记错,如果集合包含10个或更少的项目,字典将作为数组实现 谢谢。MSDN建议收藏10件或以下物品: 这是IDictionary的一个简单实现,使用单链接列表。如果元素数为10或更少,则它比哈希表更小、更快。如果性能对于大量元素非常重要,则不应使用此选项 您可能想考虑 Stasy.Cuff.Actual.ListDe词典< /代码>如果您确定少于十项

我有一个对象列表,我需要尽快找到一个对象(通过它的name属性)。我应该使用什么数据结构?我知道我可以使用字典,但列表中的项目不会超过10个,如果我没记错,如果集合包含10个或更少的项目,字典将作为数组实现

谢谢。

MSDN建议收藏10件或以下物品:

这是IDictionary的一个简单实现,使用单链接列表。如果元素数为10或更少,则它比哈希表更小、更快。如果性能对于大量元素非常重要,则不应使用此选项


您可能想考虑<代码> Stasy.Cuff.Actual.ListDe词典< /代码>如果您确定少于十项。


也考虑<代码>系统。集合。专业化。杂交字典转换行为(具有小开销),如果大小超过阈值,如果你的假设是错误的,就方便了。

< P>为什么不使用一个哈希表?它位于System.Collections命名空间中

由于您希望通过属性进行尽可能快的查找,因此应该使用
字典
。如果您希望快速查找,则大小不会影响您。这并不是说只有10项或更少的
词典占用了大量内存
Dictionary
有一个构造函数,该构造函数使用int来设置容量。

对于10项或更少的项,使用哪种类型的结构可能无关紧要。数据结构的选择取决于很多因素,而不仅仅是大小。元素的插入和删除频率是多少?找到物体的速度有多关键?这将在一个紧密的循环中使用吗?插入和删除的速度有多关键?10项是一个硬限制还是一个大概?您是否分析了您的应用程序并确定这是一个性能瓶颈?如果是这样的话,我会非常惊讶。@chrismaric-这对理论上的时间复杂度并不重要,但对实际性能可能非常重要。可能会有数以百万计的这样的操作,显然盖伊并不关心它只运行一次。这个问题发布多年后,也没有人像我一样读过。@julkiewicz那么你已经知道你的答案了,array,答案是array。这个建议可能已经过时了,因为ListDictionary不是泛型的。文档从一开始就这么说。谢谢Anna,这似乎是对我问题的完美回答。因为Dictionary和Hashtable类都是Hashtable的实现,并且在计算每个项目的hashcode时都有开销,只有在收集量不小的情况下,它们才会为自己付费。