我需要一个像SortedDictionary<int, double>
一样的数据结构,但是要根据值而不是键进行排序。当我们在字典中有大约3000个项目时,我需要大约1-2微秒来添加和删除项目。
我的第一个想法是简单地在我的代码中切换键和值。这几乎是有效的。我可以在测试中添加和删除元素大约1.2微秒。
但是,在SortedDictionary中键必须是唯一的,这意味着我的逆字典中的值必须是唯一的。在某些情况下,他们可能不会。
.NET库中的某些想法已经对我有用了吗?
答案 0 :(得分:3)
您可以按以下方式对SortedDictionary进行排序:
yourList.Sort(
delegate(KeyValuePair<int, double> val1,
KeyValuePair<int, double> val2)
{
return val1.Value.CompareTo(val2.Value);
}
);
答案 1 :(得分:1)
PowerCollections库有一个名为OrderedMultiDictionary<TKey, TValue>
的类,基本上类似于SortedDictionary<TKey, TValue>
,但允许重复。查找密钥时,您将获得可枚举而不是单个值。
图书馆是免费的,你应该能够完全按照你的意愿去做 - 把这些值存储为关键。