2009-07-08 65 views
3

我有一個接口IScriptItem,實現IComparable<IQueueItem>。 在我看來,只要有IComparable項目就足以擁有排序的東西。但我能找到的其實是SortedTrees的Dictionaries,Hashtables和SortedLists。SortedList只需要IComparable <T>

我在找的是一個帶有IComparables的有序列表。 我在錯看地方嗎?

+0

你還沒有真正說過你在找什麼 - 我在猜測一個通用列表,它保持它的項目有序? – 2009-07-08 21:27:02

+0

對不起,這是遲到了,我有點厭倦了 – 2009-07-09 05:36:17

回答

3

沒有什麼內置的。你有一些選擇:

  • 使用帶虛擬TValue的SortedList。
  • 使用列表或數組並在必要時調用List.Sort()或Array.Sort()。
  • 寫你自己的。
  • 使用第三方庫

對於這種特殊的情況下,簽出Wintellect的PowerCollections OrderedBag類,它採用了紅黑樹內部。其他好的免費數據結構庫包括NGenerics和C5。

2

如果我理解正確,您需要一個SortedCollection < TValue>而不是各種SortedCollection < TKey,TValue>。

在.NET 4中有一個新的SortedSet<T>類,它保持項目的順序,但不允許重複。否則,你必須看看第三方的選擇,就像Matt Howells提到的那樣。