Priority Queue in .Net [Duplikat]
-
06-07-2019 - |
Frage
Mögliche Duplizieren:
Prioritätswarteschlange in .Net
Diese Frage ist ähnlich, aber ich möchte genau wissen:
Gibt es eine Klasse / Struktur / ... in .Net für Prioritätswarteschlange? Genau wie in STL, die dafür hat priority_queue
. Er akzeptiert eine comparsion Funktion angepasste Sorten zu unterstützen.
Das Beste, was ich in .Net gefunden ist SortedList
, gibt es eine Sammlung Klasse in .NET, die eine Funktion Vergleichen akzeptiert die es der Elemente für die Sortierung?
Gibt es eine Möglichkeit, eine .NET-Klasse (vielleicht HashSet ) abzuleiten, die diese Funktion unterstützt?
Hinweis:
- Ich weiß, dass viele Drittparteien für diese wirklich gute Klassen implementiert. Vielleicht ein gutes Beispiel dafür ist PowerCollections . Aber ich mag t schnelle und einfache Lösung mit bestehenden Klassen in .NET
- Ich bin mit .Net Framework 3.5 und wie C #;)
Lösung
Sie können mit einer SortedDictionary -Klasse, die generisch ist.
Sie können einen comparer Objekt an den Konstruktor , die sollte die Priorität Vergleich Ihrer Objekte behandeln:
public class DataComparer : IComparer<Data>
{
public Int32 Compare(Data a, Data b)
{
if (a == null && b == null)
return 0;
if (a == null)
return -1;
if (b == null)
return +1;
return a.Priority.CompareTo(b.Priority);
}
}
SortedDictionary<Data, Data> priQueue = new SortedDictionary<Data, Data>(
new DataComparer());
Andere Tipps
Sie könnten nur IComparable auf Ihrer Klasse implementieren und die spezifischen comparer in Ihrer Klasse erstellen, auf diese Weise einfach IList.Sort () verwenden?