私はコレクションのクラスを探しています。これは、要素をソート順に自動的に挿入する(つまり優先度が高い)ので、後で反復するときにこの順番で要素を取得します。特定のプロパティに基づいて並べ替え順序を維持するコレクションクラスですか?
SortedList私が欲しいものではありませんこれは、キーでソートするようです。
私はコレクションのクラスを探しています。これは、要素をソート順に自動的に挿入する(つまり優先度が高い)ので、後で反復するときにこの順番で要素を取得します。特定のプロパティに基づいて並べ替え順序を維持するコレクションクラスですか?
SortedList私が欲しいものではありませんこれは、キーでソートするようです。
PriorityQueue
が必要です。このような質問には、いくつかの実装があります:C# Priority Queue。
Hehe ...また私の質問:)違いは、今回は私です優先度を別にする必要はありません。 – mpen
SortedSet<T>
は、.NET 4で新しく使用できます。これは、IComparable<T>
を実装するクラスで使用することも、コンストラクタのオーバーロードによって外部比較器を提供することもできます。例:
class Foo
{
public int Bar { get; set; }
}
class FooComparer : IComparer<Foo>
{
public int Compare(Foo x, Foo y)
{
// add null checking, demo purposes only
return x.Bar.CompareTo(y.Bar);
}
}
...
SortedSet<Foo> sortedFoos = new SortedSet<Foo>(new FooComparer());
sortedFoos.Add(new Foo() { Bar = 2 });
sortedFoos.Add(new Foo() { Bar = 1 });
foreach (Foo foo in sortedFoos)
{
Console.WriteLine(foo.Bar);
}
// Prints 1, 2
注:このコレクションはHashSet<T>
ように振る舞う。等しいと比較する複数のオブジェクトを追加すると、それらは破棄されます。
C5 has an IntervalHeap私がしたいことをします。
SortedDictionary <>を試しましたか? http://msdn.microsoft.com/en-us/library/f7fta44c.aspx –
@ Harvey:キーをソートします。私は鍵が必要ない。 – mpen
この文 "SortedListはキーで並べ替えるようですが、これは私が望むものではありません。"あなたの疑問は矛盾です。ソートされた順序の任意の種類が課されるためには、比較関数(したがって、比較されるべきキー)がなければならない!おそらくFIFOキューが必要でしょうか? –