【发布时间】:2011-01-07 06:38:28
【问题描述】:
三个不同的字典——OrderedDictionary、ListDictionary 和 HybridDictionary,当它们都执行类似的功能时,它们需要什么?
它们都没有排序,集合的元素可以通过键检索到所有的元素。那么,三个不同的类的目的是什么?
【问题讨论】:
标签: c# .net collections
三个不同的字典——OrderedDictionary、ListDictionary 和 HybridDictionary,当它们都执行类似的功能时,它们需要什么?
它们都没有排序,集合的元素可以通过键检索到所有的元素。那么,三个不同的类的目的是什么?
【问题讨论】:
标签: c# .net collections
简而言之:
Dictionary - 嗯,一本字典。
ListDictionary - 用于小型集合,通常少于 10 个项目
HybridDictionary - 在集合大小未知时使用(根据集合大小切换实现)
OrderedDictionary - 与 SortedDictionary<TKey, TValue> 类的元素不同,OrderedDictionary 的元素不按键排序。您可以通过键或索引访问元素。
【讨论】:
补充凯尔的回答:
OrderedDictionary 允许通过键和索引检索(它在内部使用哈希表和数组),但每个项目的开销更大
ListDictionary的内部结构是链表,在key的插入和检索方面表现不佳,但保留了原来的插入顺序
HybridDictionary 如果字典不包含很多项目,则为 ListDictionary,如果项目数量达到特定限制,则转换为 Hashtable(我个人认为,从 C#2 开始,您应该使用 Dictionary 而不是它)
【讨论】:
ListDictionary 和OrderedDictionary 之间的主要区别,前者不保留顺序,而后者则保留。 ListDictionary 命名有点混乱(我认为当你有混合版本时不需要)。