私はソートされたデータ構造を探しています。これはSTLセット(T)に似ています。 SortedListが見つかりましたが、(key、val)が必要です。List(string)のようなものを探しています - ソートのみです。C++ STLセットの代わりのC#<T>
Web上でSpring.Collectionsが見つかりましたが、フレームワークで認識されません。
通常の基本フレームワークで使用できる単純なSortedSetはありますか?
おかげで、 ギャル
私はソートされたデータ構造を探しています。これはSTLセット(T)に似ています。 SortedListが見つかりましたが、(key、val)が必要です。List(string)のようなものを探しています - ソートのみです。C++ STLセットの代わりのC#<T>
Web上でSpring.Collectionsが見つかりましたが、フレームワークで認識されません。
通常の基本フレームワークで使用できる単純なSortedSetはありますか?
おかげで、 ギャル
あなたはSystem.Collections.Generic.Dictionaryでこれを行うことができます。良い記事は次のとおりです。Dictionarys and sorting
編集: SortedDictionaryもbetterと思われます。
ありがとうございました。しかし、これはまさに私が避けようとしていたものです:
List<T>
もソートできます。デフォルトではソートされませんが、必要に応じてカスタムソートアルゴリズムを使用してソートすることもできます。
List <>を使用してSortメソッドを呼び出す方法はありますか?
ない拡張子が、それが唯一の出発点だが、新しいメソッドを追加しますAddSortこの
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();
}
}
を試してみてください。
リストメソッド> .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);
と値をしますあなたのコードからアクセスできる名前空間に
場所を次の拡張メソッドを使用して
be:
newList [ 0] == 3 newList [1] == 4 newListあなたはまた、単にnewList.Addを使用することができますし、そこnewList.AddSort
これには複雑さのペナルティがあります。ソートされたデータ構造を使用して、ソートされた方法で値を挿入する方が早いでしょう。 –
この動作を含む拡張メソッドを使用できませんか? – ChrisBD
さて、ソートされたデータ構造を使用してソートされた方法で値を挿入すると、SortedDictionaryのように1つの方法しかありませんが、
を呼び出したときに、リストは、その後、ソートされている[3] == 6
常にソートされたSystem.Collections.SortedListまたはSystem.Collections.Generic.SortedListです。 または、Array.Sortメソッドを使用して、ar定義されたモーメントを時間順に並べ替えることができます。
SortedDictionary<K,V>
とSortedList<K,V>
以外のフレームワークには何も組み込まれていません。
C5 Collectionsライブラリには、いくつかのソートされたコレクションがあります。あなたの正確な要求に応じて、以下のいずれかの方法が必要です:SortedArray<T>
、TreeBag<T>
またはTreeSet<T>
。
OrderedBag<T>
とOrderedSet<T>
のコレクションを提供するPower Collectionsもあります。
AにSortedSet < T> .NET 4.0の中に導入し、あなたが探しているもので、MSDN here
リストが設定されていない参照してください。重複を許可しますか? – tobsen
[.NETにソートされたコレクションタイプがありますか?](http://stackoverflow.com/questions/196512/is-there-a-sorted-collection-type-in-net) – nawfal