6

I use a Dictionary<string, Item> to store own items.
The reason for using a dictionary is that the keys are unique and accessing is fast.

In most cases, I use the dicionary only to access single items. But in one case I have to loop through the dictionary - here I need to have the items in order they was added.

I only know that the dictionary uses a hashtable internally, but I don't know how it is organized.

Question:
Are the items in a dictionary ordered as they are added?
What happens to the order when items are added or removed?

4

4 回答 4

4

他们根本没有订购。字典中元素的顺序是不确定的。

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

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

更新 为什么字典不是按性质排序的

于 2013-08-19T09:05:35.437 回答
1

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

返回项目的顺序未定义。

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

在不知道您的实际要求的情况下,我不可能推荐更好的行动方案。但是,一旦您开始使用多个键和排序顺序,您将失去 O(1) 检索。

于 2013-08-19T09:05:48.627 回答
0

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

没有 OrderedDictionary 的通用实现?

于 2013-08-19T09:05:10.860 回答
0

不,它们没有排序,您可以在 Microsoft 的中阅读:

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

于 2013-08-19T09:05:33.663 回答