Queue Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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:
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.