2009-07-02 3 views
3

私はソートされたデータ構造を探しています。これはSTLセット(T)に似ています。 SortedListが見つかりましたが、(key、val)が必要です。List(string)のようなものを探しています - ソートのみです。C++ STLセットの代わりのC#<T>

Web上でSpring.Collectionsが見つかりましたが、フレームワークで認識されません。

通常の基本フレームワークで使用できる単純なSortedSetはありますか?

おかげで、 ギャル

+1

リストが設定されていない参照してください。重複を許可しますか? – tobsen

+0

[.NETにソートされたコレクションタイプがありますか?](http://stackoverflow.com/questions/196512/is-there-a-sorted-collection-type-in​​-net) – nawfal

答えて

7

あなたはSystem.Collections.Generic.Dictionaryでこれを行うことができます。良い記事は次のとおりです。Dictionarys and sorting

編集: SortedDictionaryもbetterと思われます。

+0

ありがとうございました。しかし、これはまさに私が避けようとしていたものです:を持っています。リストのような値だけを持つソートされたデータ構造を探していますが、何もないので、あなたのソリューションを使用します。 :-) –

1

List<T>もソートできます。デフォルトではソートされませんが、必要に応じてカスタムソートアルゴリズムを使用してソートすることもできます。

-1

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

+0

これには複雑さのペナルティがあります。ソートされたデータ構造を使用して、ソートされた方法で値を挿入する方が早いでしょう。 –

+0

この動作を含む拡張メソッドを使用できませんか? – ChrisBD

+0

さて、ソートされたデータ構造を使用してソートされた方法で値を挿入すると、SortedDictionaryのように1つの方法しかありませんが、を使用する必要があり、もっと簡単なものを探すには

0

を呼び出したときに、リストは、その後、ソートされている[3] == 6

常にソートされたSystem.Collections.SortedListまたはSystem.Collections.Generic.SortedListです。 または、Array.Sortメソッドを使用して、ar定義されたモーメントを時間順に並べ替えることができます。

5

AにSortedSet < T> .NET 4.0の中に導入し、あなたが探しているもので、MSDN here

関連する問題