Queue Classe

Definição

Representa uma coleção inicial de objetos.

public ref class Queue : System::Collections::ICollection
public ref class Queue : ICloneable, System::Collections::ICollection
public class Queue : System.Collections.ICollection
[System.Serializable]
public class Queue : ICloneable, System.Collections.ICollection
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class Queue : ICloneable, System.Collections.ICollection
public class Queue : ICloneable, System.Collections.ICollection
type Queue = class
    interface ICollection
    interface IEnumerable
[<System.Serializable>]
type Queue = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Queue = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
type Queue = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
Public Class Queue
Implements ICollection
Public Class Queue
Implements ICloneable, ICollection
Herança
Queue
Atributos
Implementações

Exemplos

O exemplo a seguir mostra como criar e adicionar valores a um Queue e como imprimir seus valores.

 using System;
 using System.Collections;
 public class SamplesQueue  {

    public static void Main()  {

       // Creates and initializes a new Queue.
       Queue myQ = new Queue();
       myQ.Enqueue("Hello");
       myQ.Enqueue("World");
       myQ.Enqueue("!");

       // Displays the properties and values of the Queue.
       Console.WriteLine( "myQ" );
       Console.WriteLine( "\tCount:    {0}", myQ.Count );
       Console.Write( "\tValues:" );
       PrintValues( myQ );
    }

    public static void PrintValues( IEnumerable myCollection )  {
       foreach ( Object obj in myCollection )
          Console.Write( "    {0}", obj );
       Console.WriteLine();
    }
 }
 /*
 This code produces the following output.

 myQ
     Count:    3
     Values:    Hello    World    !
*/
Imports System.Collections

Public Class SamplesQueue

    Public Shared Sub Main()

        ' Creates and initializes a new Queue.
        Dim myQ As New Queue()
        myQ.Enqueue("Hello")
        myQ.Enqueue("World")
        myQ.Enqueue("!")

        ' Displays the properties and values of the Queue.
        Console.WriteLine("myQ")
        Console.WriteLine("    Count:    {0}", myQ.Count)
        Console.Write("    Values:")
        PrintValues(myQ)

    End Sub

    Public Shared Sub PrintValues(myCollection As IEnumerable)
        Dim obj As [Object]
        For Each obj In  myCollection
            Console.Write("    {0}", obj)
        Next obj
        Console.WriteLine()
    End Sub

End Class


' This code produces the following output.
' 
' myQ
'     Count:    3
'     Values:    Hello    World    !

Comentários

Essa classe implementa uma fila como uma matriz circular. Os objetos armazenados em um são inseridos em uma Queue extremidade e removidos da outra.

Importante

Não recomendamos que você use a Queue classe para um novo desenvolvimento. Em vez disso, recomendamos que você use a classe genérica Queue<T> . Para obter mais informações, consulte coleções não genéricas que não devem ser usadas no GitHub.

Filas e pilhas são úteis quando você precisa de armazenamento temporário para obter informações; ou seja, quando talvez você queira descartar um elemento depois de recuperar seu valor. Use Queue se precisar acessar as informações na mesma ordem em que elas são armazenadas na coleção. Use Stack se precisar acessar as informações em ordem inversa. Use ConcurrentQueue<T> ou ConcurrentStack<T> se precisar acessar a coleção de vários threads simultaneamente.

Três operações principais podem ser executadas em um Queue e em seus elementos:

  • Enqueue adiciona um elemento ao final do Queue.

  • Dequeue remove o elemento mais antigo do início do Queue.

  • Peek retorna o elemento mais antigo que está no início do, mas não o Queue remove do Queue.

A capacidade de um Queue é o número de elementos que podem Queue conter. À medida que os elementos são adicionados a um Queue, a capacidade é automaticamente aumentada conforme necessário por meio da realocação. A capacidade pode ser reduzida chamando TrimToSize.

O fator de crescimento é o número pelo qual a capacidade atual é multiplicada quando uma capacidade maior é necessária. O fator de crescimento é determinado quando o Queue é construído. O fator de crescimento padrão é 2,0. A capacidade do Queue sempre aumentará pelo menos um mínimo de quatro, independentemente do fator de crescimento. Por exemplo, um Queue fator de crescimento de 1,0 sempre aumentará em quatro a capacidade quando uma capacidade maior for necessária.

Queue null aceita como um valor válido e permite elementos duplicados.

Para obter a versão genérica desta coleção, consulte System.Collections.Generic.Queue<T>

Construtores

Nome Description
Queue()

Inicializa uma nova instância da Queue classe que está vazia, tem a capacidade inicial padrão e usa o fator de crescimento padrão.

Queue(ICollection)

Inicializa uma nova instância da Queue classe que contém elementos copiados da coleção especificada, tem a mesma capacidade inicial que o número de elementos copiados e usa o fator de crescimento padrão.

Queue(Int32, Single)

Inicializa uma nova instância da Queue classe que está vazia, tem a capacidade inicial especificada e usa o fator de crescimento especificado.

Queue(Int32)

Inicializa uma nova instância da Queue classe que está vazia, tem a capacidade inicial especificada e usa o fator de crescimento padrão.

Propriedades

Nome Description
Count

Obtém o número de elementos contidos no Queue.

IsSynchronized

Obtém um valor que indica se o acesso ao Queue é sincronizado (thread safe).

SyncRoot

Obtém um objeto que pode ser usado para sincronizar o acesso ao Queue.

Métodos

Nome Description
Clear()

Remove todos os objetos do Queue.

Clone()

Cria uma cópia superficial do Queue.

Contains(Object)

Determina se um elemento está no Queue.

CopyTo(Array, Int32)

Copia os Queue elementos para um índice unidimensional Arrayexistente, começando no índice de matriz especificado.

Dequeue()

Remove e retorna o objeto no início do Queue.

Enqueue(Object)

Adiciona um objeto ao final do Queue.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetEnumerator()

Retorna um enumerador que itera por meio do Queue.

GetHashCode()

Serve como a função hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
Peek()

Retorna o objeto no início do Queue sem removê-lo.

Synchronized(Queue)

Retorna um novo Queue que encapsula a fila original e é thread-safe.

ToArray()

Copia os Queue elementos para uma nova matriz.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
TrimToSize()

Define a capacidade como o número real de elementos no Queue.

Métodos de Extensão

Nome Description
AsParallel(IEnumerable)

Habilita a paralelização de uma consulta.

AsQueryable(IEnumerable)

Converte um IEnumerable em um IQueryable.

Cast<TResult>(IEnumerable)

Converte os elementos de um IEnumerable para o tipo especificado.

OfType<TResult>(IEnumerable)

Filtra os elementos de um IEnumerable com base em um tipo especificado.

Aplica-se a

Acesso thread-safe

Membros estáticos públicos (Shared no Visual Basic) desse tipo são thread safe. Não há garantia de que quaisquer membros de instância sejam thread-safe.

Para garantir a segurança do thread, Queuetodas as operações devem ser feitas por meio do wrapper retornado pelo Synchronized(Queue) método.

Enumerar por meio de uma coleção não é intrinsecamente um procedimento thread-safe. Mesmo quando uma coleção é sincronizada, outros threads ainda podem modificar a coleção, o que faz com que o enumerador gere uma exceção. Para garantir a segurança do thread durante a enumeração, você pode bloquear a coleção durante toda a enumeração ou capturar as exceções resultantes de alterações feitas por outros threads.

Confira também