3

STL set(T) に似た、並べ替えられたデータ構造を探しています。SortedList を見つけましたが、(key, val) が必要です。List(string) のようなものを探しています - 並べ替えのみ。

Web Spring.Collections で見つけましたが、私のフレームワークはそれを認識しません。

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

ありがとう、ギャル

4

6 に答える 6

7

System.Collections.Generic.Dictionary でこれを行うことができます。ここに良い記事があります:辞書とソート

編集: SortedDictionary はさらに優れているようです。

于 2009-07-02T06:32:08.653 に答える
6

.NET 4.0 で導入された SortedSet < T > が探しているものです。MSDNはこちらを参照してください。

于 2010-03-02T19:03:46.920 に答える
1

SortedDictionary<K,V>と以外にフレームワークに組み込まれているものはありませんSortedList<K,V>

C5 コレクションライブラリには、いくつかの並べ替えられたコレクションがあります。正確な要件に応じて、次のいずれかでトリックを実行する必要があります: SortedArray<T>TreeBag<T>またはTreeSet<T>.

コレクションを提供するPower CollectionsもありOrderedBag<T>ますOrderedSet<T>

于 2009-07-02T09:41:04.283 に答える
1

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

于 2009-07-02T06:36:27.960 に答える
0

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

于 2009-07-02T09:30:21.607 に答える
-1

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 を呼び出すとリストがソートされます。

于 2009-07-02T06:38:43.180 に答える