字典项顺序
本文关键字:顺序 字典 | 更新日期: 2023-09-27 18:28:05
我使用Dictionary<string, Item>
来存储自己的项目
使用字典的原因是键是唯一的,而且访问速度很快。
在大多数情况下,我只使用dicionary来访问单个项目。但在一种情况下,我必须循环浏览字典——在这里,我需要按照添加的顺序排列项目。
我只知道字典内部使用了一个哈希表,但我不知道它是如何组织的。
问题:
字典中的项目是按顺序添加的吗
添加或删除项目时订单会发生什么情况?
它们根本没有排序。字典中元素的顺序是不确定的。
MSDN:"返回项目的顺序未定义。"
您可以使用OrderedDictionary
来通过索引访问项目。或者,如果您希望按密钥排序,可以使用SortedDictionary
。
更新为什么字典不是按自然顺序排列的?
如果你查看msdn页面,你会发现(对于你的第一个问题)
返回项目的顺序未定义。
第二个问题的答案是,它是由哈希表实现的。
如果不知道你的实际要求是什么,我不可能推荐一个更好的行动方案。但一旦你开始摆弄多个键和排序顺序,你就会失去O(1)检索。
不,它们没有排序,正如您在微软的库中所读到的那样
为了枚举的目的,字典中的每个项都被视为KeyValuePair结构,表示一个值及其钥匙返回项目的顺序未定义。
字典根本没有排序,因此不能依赖其中的值。您可以尝试使用OrderedDictionary
。如果你喜欢通用的,请查看以下链接:
没有OrderedDictionary的通用实现?