Prioridade fila na Net [duplicado]
-
06-07-2019 - |
Pergunta
Duplicate possíveis:
fila na Net
Esta questão é semelhante, mas eu quero saber exatamente:
Existe alguma classe / struct / ... em .Net para fila de prioridade? Assim como em STL que priority_queue
para isso. Ele aceita um comparsion função para apoiar os tipos personalizados.
A melhor coisa que eu encontrei em .Net é SortedList
Então, há alguma classe de coleção na Net que aceita uma função Comparar para classificar a TI de elementos?
Existe alguma maneira para derivar uma classe .Net (talvez HashSet ) que suporta este recurso?
Nota:
- Eu sei que muitos Terceiros implementado realmente boas aulas para isso. Talvez um bom exemplo é PowerCollections . Mas eu quero t rápida e simples solução usando classes existentes em .Net
- Eu estou usando .Net Framework 3.5 e, como C #;)
Solução
Você pode usar um SortedDictionary classe, que é genérico.
Você pode especificar um objeto comparer ao construtor , que deve lidar com a comparação prioridade de seus objetos:
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());
Outras dicas
Você poderia apenas implementar IComparable na sua classe e criar o comparador específico dentro de sua classe, de que maneira você pode apenas usar IList.Sort ()?