我正在尋找一個有序的數據結構,它與STL集(T)類似。 我發現SortedList,但它需要(鍵,val),我正在尋找類似List(字符串)的東西 - 只有排序。用於C++ STL集的C#替代方案<T>
我在網上找到Spring.Collections,但我的框架無法識別它。
是否有一個簡單的SortedSet我可以在常規的基本框架中使用?
感謝, 加
我正在尋找一個有序的數據結構,它與STL集(T)類似。 我發現SortedList,但它需要(鍵,val),我正在尋找類似List(字符串)的東西 - 只有排序。用於C++ STL集的C#替代方案<T>
我在網上找到Spring.Collections,但我的框架無法識別它。
是否有一個簡單的SortedSet我可以在常規的基本框架中使用?
感謝, 加
你可以用System.Collections.Generic.Dictionary做到這一點。這裏有一篇好文章:Dictionarys and sorting
編輯: SortedDictionary似乎甚至better。
謝謝。但這正是我想要避免的:有
另外List<T>
可以排序。它不是默認排序的,但是如果您願意的話,您可以對它進行排序,即使使用自定義排序算法。
如何使用列表<>並調用Sort方法?
不是一個擴展,但嘗試這個
public class SortedList<T>: List<T>
{
public SortedList(): base()
{
}
public SortedList(IEnumerable<T> collection): base(collection)
{
}
public SortedList(int capacity)
: base(capacity)
{
}
public void AddSort(T item)
{
base.Add(item);
this.Sort();
}
}
這只是一個起點,但增加了一個新的方法AddSort。
將使用擴展方法來更改列表<> .Add方法並在其末尾調用排序。
使用擴展方法
將在您的代碼訪問的命名空間中的以下內容:
public static class ListExtension
{
public static void AddSort<T>(this List<T> list, T item)
{
list.Add(item);
list.Sort();
}
}
您可以使用代碼,如:
List<int> newList = List<int>();
newList.AddSort(6);
newList.AddSort(4);
newList.AddSort(3);
,並將值成爲:
newList [ 0] == 3 newList [1] == 4 newList [3] == 6
您也可以只使用則newList.Add和列表進行排序,當你調用newList.AddSort
有是一個System.Collections.SortedList或System.Collections.Generic.SortedList它總是排序。 或者你可以使用Array.Sort方法來按時間排序定義的時刻。
除了SortedDictionary<K,V>
和SortedList<K,V>
之外,框架中沒有任何內容。
C5 Collections庫有幾個排序的集合。根據您的確切要求,以下情況之一應該執行此操作:SortedArray<T>
,TreeBag<T>
或TreeSet<T>
。
還有Power Collections,它提供了OrderedBag<T>
和OrderedSet<T>
集合。
的SortedSet,< T>介紹在.NET 4.0中是你在找什麼,請參閱MSDN here
列表不是一套。你想允許重複嗎? – tobsen 2010-12-13 20:49:09
[在.NET中是否有排序的集合類型?](http://stackoverflow.com/questions/196512/is-there-a-sorted-collection-type-in-net) – nawfal 2014-06-02 18:28:30