.NET 4.0 presenta una clase SortedSet<T>
, junto con la interfaz de ISet<T>
que se implementa por SortedSet<T>
y HashSet<T>
. Obviamente, esto simplificará la implementación de su propia clase PriorityQueue<T>
.
Sin embargo, todavía no existe la interfaz IQueue<T>
, que admitiría al menos la necesidad de colas de prioridad o cualquier otra implementación que no sea la BCL básica Queue<T>
. Del mismo modo, no hay IStack<T>
.
Personalmente encuentro que esta falta de algunas de estas interfaces más básicas es decepcionante y miope, especialmente porque el costo de diseño/especificación/implementación/prueba/documentación de extraer una interfaz simple de una clase existente debería ser muy bajo.
public interface IQueue<T> : IEnumerable<T>, ICollection, IEnumerable
{
T Dequeue();
void Enqueue(T item);
T Peek();
}
Allí, ¿ves? Lo he hecho.
Una de las primeras cosas que noté al pasar de Java a C#. ¿No hay cola de prioridad? Java incluso tenía/ha sincronizado colas de prioridad. – Carra
ver también http://stackoverflow.com/questions/102398/priority-queue-in-net –