4

我有一个IScriptItem实现IComparable<IQueueItem>. 在我看来,拥有物品似乎足以对IComparable任何东西进行分类。但我能找到的只是字典、哈希表和排序列表,它们实际上是排序树。

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

4

2 回答 2

3

没有什么内置的。你有一些选择:

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

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

于 2009-07-08T21:32:28.993 回答
3

如果我理解正确,您需要一个 SortedCollection< TValue> 而不是那里的各种 SortedCollection< TKey, TValue> 。

在 .NET 4 中,有一个新SortedSet<T>类可以保持其项目有序,但不允许重复。否则,您将不得不查看第 3 方选项,就像 Matt Howells 提到的那样。

于 2009-07-08T21:48:46.510 回答