SortedList只需要IComparable <t> </t>

时间:2009-07-08 21:24:58

标签: c# .net sorting icomparable

我有一个实现IScriptItem的接口IComparable<IQueueItem>。 在我看来,拥有IComparable个项目似乎已经足够了。但我能找到的只是Dictionaries,Hashtables和SortedLists,它们实际上是SortedTrees。

我正在寻找的是一个排序的通用列表,它采用IComparables。 我在寻找错误的地方吗?

2 个答案:

答案 0 :(得分:3)

没有任何内置功能。你有一些选择:

  • 将SortedList与虚拟TValue一起使用。
  • 使用列表或数组,并在必要时调用List.Sort()或Array.Sort()。
  • 自己写。
  • 使用第三方库

对于这个特殊情况,请查看Wintellect PowerCollections OrderedBag类,它在内部使用红黑树。其他优秀的免费数据结构库包括NGenerics和C5。

答案 1 :(得分:3)

如果我理解正确,你想要一个SortedCollection&lt; TValue&GT;而不是各种SortedCollection&lt; TKey,TValue&gt;那里。

在.NET 4中,有一个新的SortedSet<T>类可以保持其项目的顺序,但不允许重复。否则你将不得不看第三方选项,如Matt Howells提到的选项。