Queue Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa uma coleção de objetos que é o primeiro a entrar, o primeiro a sair.
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 seguinte mostra como criar e adicionar valores a Queue um e como imprimir os 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 !
Observações
Esta classe implementa uma fila como um array circular. Os objetos armazenados num Queue são inseridos numa extremidade e removidos da outra.
Importante
Não recomendamos que uses a Queue disciplina para novos desenvolvimentos. Em vez disso, recomendamos que use a classe genérica Queue<T> . Para mais informações, veja Não devem ser usadas coleções não genéricas em GitHub.
Filas e pilhas são úteis quando precisa de armazenamento temporário para informação; isto é, quando pode querer descartar um elemento depois de recuperar o seu valor. Use, Queue se precisar, aceder à informação pela mesma ordem em que está armazenada na coleção. Usa Stack se precisares de aceder à informação por ordem inversa. Use ConcurrentQueue<T> ou ConcurrentStack<T> se precisar de aceder à coleção a partir de múltiplos threads em simultâneo.
Podem ser realizadas três operações principais sobre um Queue e os seus elementos:
A capacidade de a Queue é o número de elementos que Queue podem dever. À medida que elementos são adicionados a um Queue, a capacidade é automaticamente aumentada conforme necessário através da realocação. A capacidade pode ser reduzida chamando TrimToSize.
O fator de crescimento é o número pelo qual a capacidade atual é multiplicada quando é necessária uma capacidade maior. O fator de crescimento é determinado quando o Queue é construído. O fator de crescimento padrão é 2,0. A capacidade do Queue aumentará sempre pelo menos um mínimo de quatro, independentemente do fator de crescimento. Por exemplo, um Queue com fator de crescimento de 1,0 aumentará sempre a sua capacidade em quatro quando for necessária uma maior capacidade.
Queue aceita null como valor válido e permite elementos duplicados.
Para a versão genérica desta coleção, veja System.Collections.Generic.Queue<T>
Construtores
| Name | 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 do número de elementos copiados e utiliza 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 utiliza 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
| Name | Description |
|---|---|
| Count |
Obtém o número de elementos contidos no Queue. |
| IsSynchronized |
Recebe 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
| Name | Description |
|---|---|
| Clear() |
Remove todos os objetos do Queue. |
| Clone() |
Cria uma cópia superficial do Queue. |
| Contains(Object) |
Determina se um elemento pertence ao Queue. |
| CopyTo(Array, Int32) |
Copia os Queue elementos para um unidimensional Arrayexistente , começando no índice especificado do array. |
| Dequeue() |
Remove e devolve 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() |
Devolve um enumerador que itera através do Queue. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| Peek() |
Devolve o objeto no início do Queue sem o remover. |
| Synchronized(Queue) |
Devolve um novo Queue que envolve a fila original e é seguro para threads. |
| ToArray() |
Copia os Queue elementos para um novo arranjo. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| TrimToSize() |
Define a capacidade para o número real de elementos no Queue. |
Métodos da Extensão
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Permite a paralelização de uma consulta. |
| AsQueryable(IEnumerable) |
Converte um IEnumerable para um IQueryable. |
| Cast<TResult>(IEnumerable) |
Conjura os elementos de an IEnumerable para o tipo especificado. |
| OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base num tipo especificado. |
Aplica-se a
Segurança de Thread
Os membros estáticos públicos (Shared em Visual Basic) deste tipo são seguros para threads. Qualquer membro de instância não é garantido que seja seguro contra threads.
Para garantir a segurança da thread do Queue, todas as operações devem ser feitas através do invólucro devolvido pelo Synchronized(Queue) método.
Enumerar através de uma coleção não é, intrinsecamente, um procedimento seguro para threads. Mesmo quando uma coleção está sincronizada, outros threads ainda podem modificar a coleção, o que faz com que o enumerador lance uma exceção. Para garantir a segurança dos threads durante a enumeração, pode bloquear a coleção durante toda a enumeração ou apanhar as exceções resultantes de alterações feitas por outros threads.