我的词典有问题。我正在使用此代码:
Dictionary<string, string> testDictionary = new Dictionary<string, string>();
testDictionary.Add("1", "1");
testDictionary.Add("2", "2");
testDictionary.Add("3", "3");
testDictionary.Remove("2");
testDictionary.Add("4", "4");
我希望此后的字典(键和值)为[1,3,4],但它是[1,4,3]。我怎么能这样做?
答案 0 :(得分:6)
词典本质上是无序的 你不能这样做。
答案 1 :(得分:2)
未指定字典中键和值的顺序。参见:
http://msdn.microsoft.com/en-us/library/yt2fy5zk.aspx
然而,它们的顺序相同(即Keys
中的第一个条目与Values
中的第一个条目相关联。)
答案 2 :(得分:0)
字典不一定是 un -ordered(它们的顺序是一致的,毕竟,如果是任意的话),但它不是你可以改变的东西。
这样做的原因是字典是一个散列映射,它将其密钥散列到内存地址或散列表中的位置,具体取决于您的实现。这就是为什么字典查找如此之快,以及为什么你只能拥有唯一的字典键。
有关详细信息,请参阅http://en.wikipedia.org/wiki/Hash_table!
答案 3 :(得分:0)
Dictionary<string, string> testDictionary = new Dictionary<string, string>();
testDictionary.Add("1", "1");
testDictionary.Add("2", "2");
testDictionary.Add("3", "3");
testDictionary.Remove("2");
Dictionary<string, string> tempDictionary = new Dictionary<string, string>();
foreach (string key in tempDictionary.Keys )
{
tempDictionary.Add(key, tempDictionary[key]);
}
testDictionary = tempDictionary;
testDictionary.Add("4", "4");