删除后添加字典

时间:2013-04-24 15:55:15

标签: c# dictionary

我的词典有问题。我正在使用此代码:

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 个答案:

答案 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");