SortedList只需要IComparable

我有一个接口IScriptItem ,它实现了IComparable 。 在我看来,似乎有足够的IComparable项目来排序任何东西。 但我能找到的只是Dictionaries,Hashtables和SortedLists,它们实际上是SortedTrees。

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

内置任何东西都没有。 你有一些选择:

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

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

如果我理解正确,你需要一个SortedCollection 而不是那里的各种SortedCollection

在.NET 4中,有一个新的SortedSet类,它保持项目的顺序,但不允许重复。 否则你将不得不看第三方选项,比如马特豪威尔斯提到的那些选项。