English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Queue é um tipo especial de coleção que armazena elementos de maneira FIFO (first in, first out), o que é completamente oposto ao conjunto Stack <T>. Ele contém elementos na ordem de adição. O C# inclui Queue<T> genérica e Queue não genérica. Recomenda-se usar a coleção Queue<T> genérica.
Queue<T> é uma coleção FIFO (first in, first out).
está sob o espaço de nomes System.Collection.Generic.
Queue<T> pode conter elementos do tipo especificado. Ele oferece verificação de tipo no tempo de compilação e não realiza empacotamento/desempacotamento, pois é genérico.
Pode usar o método Enqueue() para adicionar elementos. Não é possível usar inicialização de conjunto(collection-sintaxe initializer)
Pode usar os métodos Dequeue() e Peek() para recuperar elementos. Não suporta indexadores.
A figura a seguir ilustra a coleção Queue:
Você pode criar objetos que armazenam elementos do tipo especificado para Queue<T> usando parâmetros de tipo. O exemplo a seguir usa o método Enqueue() para criar e adicionar elementos à Queue <T>. A coleção Queue permite valores nulos (para tipos de referência) e valores repetidos.
Queue<int> callerIds = new Queue<int>(); callerIds.Enqueue(1); callerIds.Enqueue(2); callerIds.Enqueue(3); callerIds.Enqueue(4); foreach(var id in callerIds) Console.Write(id); //Imprimir1234
Atributo | Uso |
---|---|
Count | Retorna o número total de elementos na fila. |
Método | Uso |
---|---|
Enqueue(T) | Adicionar um item à fila. |
Dequeue | Retorna um item do início da fila e o remove. |
Peek(T) | Retorna o primeiro item da fila sem removê-lo. |
Contains(T) | Verificar se o item está na fila |
Clear() | Remover todos os itens da fila. |
Os métodos Dequeue() e Peek() são usados para recuperar o primeiro elemento da coleção de fila. O Dequeue() remove e retorna o primeiro elemento da fila, pois a fila armazena elementos em ordem FIFO. Chamar o método Dequeue() em uma fila vazia provocará uma exceção InvalidOperation. Portanto, sempre verifique se o número total de itens na fila é maior que zero antes de chamar a fila.
Queue<string> strQ = new Queue<string>(); strQ.Enqueue("H"); strQ.Enqueue("e"); strQ.Enqueue("l"); strQ.Enqueue("l"); strQ.Enqueue("o"); Console.WriteLine("Número total de elementos: {0}", strQ.Count); //Saída 5 while(strQ.Count > 0){ Console.WriteLine(strQ.Dequeue()); //Saída Hello } Console.WriteLine("Número total de elementos: {0}", strQ.Count); //Saída 0
O método Peek() sempre retorna o primeiro item da coleção de fila, sem removê-lo da fila. Chamar esse método em uma fila vazia provocará uma exceção de tempo de execução InvalidOperationException.
Queue<string> strQ = new Queue<string>(); strQ.Enqueue("H"); strQ.Enqueue("e"); strQ.Enqueue("l"); strQ.Enqueue("l"); strQ.Enqueue("o"); Console.WriteLine("Número total de elementos: {0}", strQ.Count); //Saída 5 if(strQ.Count > 0){ Console.WriteLine(strQ.Peek()); //Saída H Console.WriteLine(strQ.Peek()); //Saída H } Console.WriteLine("Número total de elementos: {0}", strQ.Count); //Saída 0
O método Contains() verifica se um item existe na fila. Se o item especificado existir, retorna true, caso contrário, retorna false.
Assinatura do Contains():
bool Contains(object obj);
Queue<int> callerIds = new Queue<int>(); callerIds.Enqueue(1); callerIds.Enqueue(2); callerIds.Enqueue(3); callerIds.Enqueue(4); callerIds.Contains(2); //true callerIds.Contains(10); //false