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

我的第一个想法只是在代码中切换键和值。这几乎是可行的。通过这样做,我可以在测试中大约1.2微秒内添加和删除元素。

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

.NET库中对我有用的任何想法?

最佳答案

PowerCollections库具有一个称为OrderedMultiDictionary<TKey, TValue>的类,该类基本上类似于SortedDictionary<TKey, TValue>,但允许重复。查找键时,将得到一个可枚举的值,而不是单个值。

该库是免费的,您应该能够完全使用该类做您想做的事情-将值存储为键。

10-08 18:47