.NET SortedDictionary但按值排序

时间:2010-04-11 23:03:32

标签: c# .net collections dictionary sorteddictionary

我需要一个像SortedDictionary<int, double>一样的数据结构,但是要根据值而不是键进行排序。当我们在字典中有大约3000个项目时,我需要大约1-2微秒来添加和删除项目。

我的第一个想法是简单地在我的代码中切换键和值。这几乎是有效的。我可以在测试中添加和删除元素大约1.2微秒。

但是,在SortedDictionary中键必须是唯一的,这意味着我的逆字典中的值必须是唯一的。在某些情况下,他们可能不会。

.NET库中的某些想法已经对我有用了吗?

2 个答案:

答案 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>,但允许重复。查找密钥时,您将获得可枚举而不是单个值。

图书馆是免费的,你应该能够完全按照你的意愿去做 - 把这些值存储为关键。

相关问题