首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >字典中元素的顺序

字典中元素的顺序
EN

Stack Overflow用户
提问于 2010-10-24 18:01:40
回答 4查看 105K关注 0票数 115

我的问题是关于枚举字典元素

代码语言:javascript
复制
// Dictionary definition
private Dictionary<string, string> _Dictionary = new Dictionary<string, string>();

// add values using add

_Dictionary.Add("orange", "1");
_Dictionary.Add("apple", "4");
_Dictionary.Add("cucumber", "6");

// add values using []

_Dictionary["banana"] = 7;
_Dictionary["pineapple"] = 7;

// Now lets see how elements are returned by IEnumerator
foreach (KeyValuePair<string, string> kvp in _Dictionary)
{
  Trace.Write(String.Format("{0}={1}", kvp.Key, kvp.Value));
}

元素将以什么顺序被枚举?我可以强制按字母顺序排序吗?

EN

回答 4

Stack Overflow用户

发布于 2010-10-24 18:05:37

如果希望对元素进行排序,请使用SortedDictionary。普通的hastable/字典只有在存储布局的某种意义上才是有序的。

票数 29
EN

Stack Overflow用户

发布于 2010-10-24 18:08:13

这些项将按照它们恰好以物理方式存储在字典中的顺序返回,这取决于散列代码和项的添加顺序。因此,顺序看起来是随机的,并且随着实现的改变,您永远不应该依赖顺序保持不变。

您可以在枚举项目时对其进行排序:

代码语言:javascript
复制
foreach (KeyValuePair<string, string> kvp in _Dictionary.OrderBy(k => k.Value)) {
  ...
}

在框架2.0中,您首先必须将项目放在一个列表中,以便对它们进行排序:

代码语言:javascript
复制
List<KeyValuePair<string, string>> items = new List<KeyValuePair<string, string>>(_Dictionary);
items.Sort(delegate(KeyValuePair<string, string> x, KeyValuePair<string, string> y) { return x.Value.CompareTo(y.Value); });
foreach (KeyValuePair<string,string> kvp in items) {
  ...
}
票数 13
EN

Stack Overflow用户

发布于 2014-08-14 08:17:26

对于OrderedDictionary:

代码语言:javascript
复制
 var _OrderedDictionary = new System.Collections.Specialized.OrderedDictionary();

_OrderedDictionary.Add("testKey1", "testValue1");
_OrderedDictionary.Add("testKey2", "testValue2");
_OrderedDictionary.Add("testKey3", "testValue3");

var k = _OrderedDictionary.Keys.GetEnumerator();
var v = _OrderedDictionary.Values.GetEnumerator();

while (k.MoveNext() && v.MoveNext()) {
    var key = k.Current; var value = v.Current;
}

项按添加的顺序返回。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4007782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档