我应该将词典用于10个或更少项目的集合,还是有更好的选择?

时间:2010-03-10 18:42:46

标签: c# .net data-structures collections dictionary

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

感谢。

4 个答案:

答案 0 :(得分:11)

对于包含10个或更少项目的集合,MSDN建议使用ListDictionary

  

这是使用单链表的IDictionary的简单实现。如果元素的数量是10或更少,它比Hashtable更小和更快。如果性能对于大量元素很重要,则不应使用此方法。

答案 1 :(得分:5)

如果您确定不到十件商品,您可能需要考虑System.Collections.Specialized.ListDictionary

如果你的假设是错误的,那么考虑大小增加超过阈值的System.Collections.Specialized.HybridDictionary会切换行为(开销很小)。

答案 2 :(得分:2)

由于您希望通过属性尽可能快地查找,因此您应该使用Dictionary<Key, Value>。如果你想快速查找,大小不会伤害你。不只是10件或更少的Dictionary<Key, Value>占用了大量的内存。 Dictionary<Key, Value>有一个构造函数,它接受一个int来设置容量。

答案 3 :(得分:0)

为什么不使用Hashtable?它位于System.Collections命名空间中。