是否有一种方法或技术可以让您将元素插入到
Dictionary<TKey, TValue>
保证该项目位于该字典的 KeyCollection 的第一个索引中。
例如:
Dictionary<String, String> dic = foo.GetOutput();
// `dic` is something like:
// {"foo", "baa"},
// {"a", "b"}
我需要这样的东西:
dic.Add("key", "value", 0);
// where `0` is the index that `key` to be inserted.
foreach(KeyValuePair<String, String> key in dic)
{
Console.WriteLine("{0} = {1}", key.Key, key.Value);
}
输出:
key = value
foo = baa
a = b
最佳答案
不使用字典。
Dictionary<TKey, TValue>
被实现为哈希表。字典内部键的位置取决于散列码、进一步减少散列码以提供其内部结构索引的方式,以及以完全依赖于实现的方式插入的顺序。
这不是实现字典的唯一方法。 SortedDictionary<TKey, TValue>
在内部使用树结构,因此始终保持键的顺序。在这种情况下,我们仍然不能在开头插入一些东西,而是我们插入一些东西并将其放在适当的位置。
如果您最关心的是排序,那么您根本不需要纯词典。相反,您想要 List<KeyValuePair<TKey, TValue>>
或者你想要一个同时提供列表和字典功能的结构,它由 OrderedDictionary
提供。 .这不是泛型,但您可以轻松地围绕它创建一个泛型包装器(不提供内部使用泛型的性能优势,但在使用中提供类型安全)。
关于c# - 如何在字典的第一个索引中插入元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8761109/