SortedList只需要IComparable
我有一个接口IScriptItem
,它实现了IComparable
。 在我看来,似乎有足够的IComparable
项目来排序任何东西。 但我能找到的只是Dictionaries,Hashtables和SortedLists,它们实际上是SortedTrees。
我正在寻找的是一个排序的通用列表,它采用IComparables。 我在找错了地方吗?
内置任何东西都没有。 你有一些选择:
- 将SortedList与虚拟TValue一起使用。
- 使用列表或数组,并在必要时调用List.Sort()或Array.Sort()。
- 写你自己的。
- 使用第三方库
对于这个特殊情况,请查看Wintellect PowerCollections OrderedBag类,它在内部使用红黑树。 其他好的免费数据结构库包括NGenerics和C5。
如果我理解正确,你需要一个SortedCollection
在.NET 4中,有一个新的SortedSet
类,它保持项目的顺序,但不允许重复。 否则你将不得不看第三方选项,比如马特豪威尔斯提到的那些选项。