C# Cola (Queue)
En C#, Queue es una estructura de datos de primero en entrar, primero en salir (FIFO, First In First Out).
Queue pertenece a los espacios de nombres System.Collections o System.Collections.Generic, que proporcionan implementaciones no genéricas y genéricas respectivamente. Queue es adecuado para escenarios en los que los datos deben procesarse en el orden en que se encolan.
La cola (Queue) representa unacolección de objetos primero en entrar, primero en salir.Cuando necesite acceder a los elementos en orden FIFO, use una cola. Cuando agrega un elemento a la lista, se llamaencolar, cuando elimina un elemento de la lista, se llamadesencolar。
Características
- Primero en entrar, primero en salir: el elemento que se agregó primero a la cola es el primero en eliminarse.
- Tamaño dinámico: la capacidad de la cola se ajusta dinámicamente según sea necesario.
- Soporte de genéricos: mediante
Queue<T>se pueden almacenar elementos fuertemente tipados. - Seguridad de subprocesos:
QueueEn sí misma no es segura para subprocesos, pero se puede usarConcurrentQueue<T>para implementar la seguridad de subprocesos.
Métodos y propiedades de la clase Queue
La siguiente tabla enumeraQueuealgunas de las propiedades de uso común de laclase Queue.:
| Nombre de la propiedad | Tipo | Descripción |
|---|---|---|
Count | int | Obtiene el número de elementos de la cola. |
SyncRoot | object | Obtiene un objeto que se usa para sincronizar el acceso a la cola (no genérico). |
IsSynchronized | bool | Indica si el acceso a la cola está sincronizado (seguro para subprocesos, siempre esfalse)。 |
La siguiente tabla enumeraQueuealgunos de los métodos de uso común de laclase Queue.:
| Nombre del método | Tipo de retorno | Descripción |
|---|---|---|
| Operaciones con elementos | ||
Enqueue(object item) | void | Agrega un elemento al final de la cola. |
Dequeue() | object | Elimina y devuelve el elemento al principio de la cola. |
Peek() | object | Devuelve el elemento al principio de la cola sin eliminarlo. |
Clear() | void | Elimina todos los elementos de la cola. |
| Comprobación y copia | ||
Contains(object item) | bool | Determina si un elemento existe en la cola. |
ToArray() | object[] | Copia los elementos de la cola en una nueva matriz. |
Clone() | object | Crea una copia superficial de la cola actual. |
CopyTo(Array array, int index) | void | Copia los elementos de la cola en una matriz existente, comenzando en el índice especificado. |
| Compatibilidad con enumeradores | ||
GetEnumerator() | IEnumerator | Devuelve un enumerador para recorrer los elementos de la cola. |
| Seguridad de subprocesos | ||
Synchronized(Queue queue) | Queue | Devuelve un envoltorio de cola seguro para subprocesos. |
Ejemplos
El siguiente ejemplo demuestra el uso de la cola (Queue):
Ejemplo 1
using System.Collections;
class Program
{
static void Main()
{
Queue queue = new Queue();
// Agregar elemento
queue.Enqueue("First");
queue.Enqueue("Second");
queue.Enqueue("Third");
// Ver el frente de la cola
Console.WriteLine($"Peek: {queue.Peek()}"); // Salida: First
// Eliminar elemento
Console.WriteLine($"Dequeue: {queue.Dequeue()}"); // Salida: First
// Elementos restantes
foreach (var item in queue)
{
Console.WriteLine(item); // Salida: Second, Third
}
// Comprobar si contiene
Console.WriteLine($"Contains 'Second': {queue.Contains("Second")}"); // Salida: True
// Convertir a matriz
object[] array = queue.ToArray();
Console.WriteLine($"Array Length: {array.Length}"); // Salida: 2
}
}
Ejemplo 2
using System.Collections;
namespace CollectionsApplication
{
class Program
{
static void Main(string[] args)
{
Queue q = new Queue();
q.Enqueue('A');
q.Enqueue('M');
q.Enqueue('G');
q.Enqueue('W');
Console.WriteLine("Current queue: ");
foreach (char c in q)
Console.Write(c + " ");
Console.WriteLine();
q.Enqueue('V');
q.Enqueue('H');
Console.WriteLine("Current queue: ");
foreach (char c in q)
Console.Write(c + " ");
Console.WriteLine();
Console.WriteLine("Removing some values ");
char ch = (char)q.Dequeue();
Console.WriteLine("The removed value: {0}", ch);
ch = (char)q.Dequeue();
Console.WriteLine("The removed value: {0}", ch);
Console.ReadKey();
}
}
}
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
Current queue: A M G W Current queue: A M G W V H Removing values The removed value: A The removed value: MOtras extensiones
Colecciones de C#