STL set(T) に似た、並べ替えられたデータ構造を探しています。SortedList を見つけましたが、(key, val) が必要です。List(string) のようなものを探しています - 並べ替えのみ。
Web Spring.Collections で見つけましたが、私のフレームワークはそれを認識しません。
通常の基本フレームワークで使用できる単純な SortedSet はありますか?
ありがとう、ギャル
.NET 4.0 で導入された SortedSet < T > が探しているものです。MSDNはこちらを参照してください。
SortedDictionary<K,V>
と以外にフレームワークに組み込まれているものはありませんSortedList<K,V>
。
C5 コレクションライブラリには、いくつかの並べ替えられたコレクションがあります。正確な要件に応じて、次のいずれかでトリックを実行する必要があります: SortedArray<T>
、TreeBag<T>
またはTreeSet<T>
.
コレクションを提供するPower CollectionsもありOrderedBag<T>
ますOrderedSet<T>
。
並べ替えもList<T>
可能。デフォルトではソートされていませんが、必要に応じてカスタムソートアルゴリズムを使用してもソートできます。
常にソートされるSystem.Collections.SortedListまたはSystem.Collections.Generic.SortedListがあります。または、Array.Sortメソッドを使用して、定義された瞬間を並べ替えることができます。
List<> を使用して 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 を追加します。
拡張メソッドを使用して List<>.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 を呼び出すとリストがソートされます。