La .NET CONF 2024 acaba de terminar. Descubre las NOVEDADES de .NET 9 junto a los CAMBIOS que trae C# 13.
Puedes ver el contenido de este vídeo junto con su curso en el modo vídeo (similar a Udemy) si pulsas aquí.

PriorityQueue en C#

Con la llegada de .NET 6 nos ha llegado una nueva colección, el tipo PriorityQueue (colas con prioridad), en este post vamos a ver cómo trabajar con él. 

 

1 - Qué es PriorityQueue en C#?

Anteriormente vimos el tipo Queue<T> el cual representa una cola FIFO

El tipo PriorityQueue nos permite indicar en qué posición vamos a incluir cada uno de los elementos que queramos añadir Este nuevo tipo lo representamos con PriorityQueue<TElement, TPriority>(); El primer tipo contendrá nuestro valor, y el segundo tipo es el que va a definir la prioridad.

priority queue descripción

El uso de PriorityQueue puede resultar muy similar al uso de SortedList, pero no es lo mismo, ya que las colas no están pensadas para ser utilizadas como listas, aunque técnicamente se puede.

 

 

2 -  Crear una PriorityQueue y añadir elementos en C#

Para crear una cola de prioridad (PriorityQueue) únicamente debemos instanciarla e invocar el método .Enqueue() para incluir elementos, pero recuerda que debemos pasar dos parámetros, el valor y la propiedad.

PriorityQueue<string, int> colaPrioridad = new PriorityQueue<string, int>();

colaPrioridad.Enqueue("Opel", 2);
colaPrioridad.Enqueue("Audi", 1);
colaPrioridad.Enqueue("BMW", 3);
  • Nota: si añadimos múltiples elementos con la misma prioridad, estos saldrán de la cola en orden inverso

 

 

3 - Recibir elementos de una PriorityQueue en C#

Para recibir elementos tenemos tres opciones

  • Peek(): el cual nos devolverá el siguiente ítem de la cola sin removerlo de la cola.
  • Dequeue(): El cual nos devuelve el último ítem de la cola y lo remueve de la misma.
  • EnqueueDequeue(): alternativamente podemos utilizar esta versión la cual además de permitirnos recibir el elemento de la cola a sacar, nos permite introducir uno a nosotros mismos.
string resultPeek = colaPrioridad.Peek();
string resultDequeue = colaPrioridad.Dequeue();
string resultDequeue2 = colaPrioridad.EnqueueDequeue("Mazda", 3);
Console.WriteLine(resultPeek); //Audi
Console.WriteLine(resultDequeue); //Audi otra vez
Console.WriteLine(resultDequeue2); //Opel

 

 

4 - Eliminar elementos de una cola de prioridad en C#

Para eliminar elementos de una cola de prioridad sin recibirlos la única opción es limpiar dicha cola utilizando .Clear().

colaPrioridad.Clear();

 

 

Conclusión

En este post hemos visto cómo crear una cola de prioridad en C#

Cómo añadir elementos a una cola de prioridad

Cómo recibir elementos de una cola de prioridad.

 


Uso del bloqueador de anuncios adblock

Hola!

Primero de todo bienvenido a la web de NetMentor donde podrás aprender programación en C# y .NET desde un nivel de principiante hasta más avanzado.


Yo entiendo que utilices un bloqueador de anuncios como AdBlock, Ublock o el propio navegador Brave. Pero te tengo que pedir por favor que desactives el bloqueador para esta web.


Intento personalmente no poner mucha publicidad, la justa para pagar el servidor y por supuesto que no sea intrusiva; Si pese a ello piensas que es intrusiva siempre me puedes escribir por privado o por Twitter a @NetMentorTW.


Si ya lo has desactivado, por favor recarga la página.


Un saludo y muchas gracias por tu colaboración

© copyright 2024 NetMentor | Todos los derechos reservados | RSS Feed

Buy me a coffee Invitame a un café