我使用Dictionary<string, Item>
来存储自己的物品
使用字典的原因是密钥是唯一的,访问速度很快。
在大多数情况下,我只使用dicionary来访问单个项目。但在一个案例中,我必须遍历字典 - 在这里我需要按顺序添加项目。
我只知道字典在内部使用哈希表,但我不知道它是如何组织的。
问题:
字典中的项目是否在添加时按顺序排列?
添加或删除项目时,订单会发生什么变化?
答案 0 :(得分:4)
根本没有订购。字典中元素的顺序是非确定性的。
MSDN: "The order in which the items are returned is undefined."
您可以使用OrderedDictionary
代替通过索引访问项目。或者,如果您希望按键排序,可以使用SortedDictionary
。
答案 1 :(得分:1)
如果您查看the msdn pages,您会发现(第一个问题)
未定义项目的返回顺序。
第二个问题的答案是它是由哈希表实现的。
我不可能在不知道您的实际要求的情况下推荐更好的行动方案。但是一旦你开始搞乱多个键并对命令进行排序,你就会失去你的O(1)检索。
答案 2 :(得分:0)
字典根本没有订购,所以你不能依赖那里的价值观。您可以尝试使用OrderedDictionary
。如果您更喜欢通用的,请检查以下链接:
答案 3 :(得分:0)
不,他们没有订购,因为您可以阅读Microsoft的library:
出于枚举的目的,字典中的每个项都被视为 表示值及其值的KeyValuePair结构 键。返回项目的顺序未定义。