字典项顺序

本文关键字:顺序 字典 | 更新日期: 2023-09-27 18:28:05

我使用Dictionary<string, Item>来存储自己的项目
使用字典的原因是键是唯一的,而且访问速度很快。

在大多数情况下,我只使用dicionary来访问单个项目。但在一种情况下,我必须循环浏览字典——在这里,我需要按照添加的顺序排列项目。

我只知道字典内部使用了一个哈希表,但我不知道它是如何组织的。

问题:
字典中的项目是按顺序添加的吗
添加或删除项目时订单会发生什么情况?

字典项顺序

它们根本没有排序。字典中元素的顺序是不确定的。

MSDN:"返回项目的顺序未定义。"

您可以使用OrderedDictionary来通过索引访问项目。或者,如果您希望按密钥排序,可以使用SortedDictionary

更新为什么字典不是按自然顺序排列的?

如果你查看msdn页面,你会发现(对于你的第一个问题)

返回项目的顺序未定义。

第二个问题的答案是,它是由哈希表实现的。

如果不知道你的实际要求是什么,我不可能推荐一个更好的行动方案。但一旦你开始摆弄多个键和排序顺序,你就会失去O(1)检索。

不,它们没有排序,正如您在微软的库中所读到的那样

为了枚举的目的,字典中的每个项都被视为KeyValuePair结构,表示一个值及其钥匙返回项目的顺序未定义。

字典根本没有排序,因此不能依赖其中的值。您可以尝试使用OrderedDictionary。如果你喜欢通用的,请查看以下链接:

没有OrderedDictionary的通用实现?