0

我的字典有问题。我正在使用这段代码:

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]。我怎样才能做到这一点?

4

4 回答 4

6

字典本质上是无序的。
你不能那样做。

于 2013-04-24T15:57:42.870 回答
2

字典中键和值的顺序未指定。看:

http://msdn.microsoft.com/en-us/library/yt2fy5zk.aspx

但是,它们的顺序相同(即 中的第一个条目Keys与 中的第一个条目相关联Values)。

于 2013-04-24T15:57:49.107 回答
0

字典不一定是无序的(它们的顺序是一致的,毕竟,如果是任意的),但它不是你可以改变的。

这样做的原因是字典是一个哈希映射,它将其键哈希到内存地址或哈希表中的位置,具体取决于您的实现。这就是为什么字典查找如此之快,以及为什么你只能拥有唯一的字典键的原因。

请参阅http://en.wikipedia.org/wiki/Hash_table了解更多信息!

于 2013-04-24T16:07:37.627 回答
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");
于 2020-09-10T05:20:57.323 回答