Queue Clase

Definición

Representa una colección de objetos first-in y first-out.

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
Herencia
Queue
Atributos
Implementaciones

Ejemplos

En el ejemplo siguiente se muestra cómo crear y agregar valores a y Queue cómo imprimir sus 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    !

Comentarios

Esta clase implementa una cola como una matriz circular. Los objetos almacenados en se Queue insertan en un extremo y se quitan del otro.

Important

No se recomienda usar la Queue clase para el nuevo desarrollo. En su lugar, se recomienda usar la clase genérica Queue<T> . Para obtener más información, consulte Colecciones no genéricas no deben usarse en GitHub.

Las colas y pilas son útiles cuando se necesita almacenamiento temporal para obtener información; es decir, cuando es posible que desee descartar un elemento después de recuperar su valor. Use Queue si necesita acceder a la información en el mismo orden en que se almacena en la colección. Use Stack si necesita acceder a la información en orden inverso. Use ConcurrentQueue<T> o ConcurrentStack<T> si necesita acceder a la colección desde varios subprocesos simultáneamente.

Se pueden realizar tres operaciones principales en y Queue sus elementos:

  • Enqueueagrega un elemento al final de .Queue

  • Dequeue quita el elemento más antiguo del principio de Queue.

  • Peek devuelve el elemento más antiguo que está al principio de pero Queue no lo quita de Queue.

La capacidad de es Queue el número de elementos que Queue puede contener. A medida que se agregan elementos a , Queuela capacidad aumenta automáticamente según sea necesario mediante la reasignación. La capacidad se puede reducir llamando a TrimToSize.

El factor de crecimiento es el número por el que se multiplica la capacidad actual cuando se requiere una mayor capacidad. El factor de crecimiento se determina cuando Queue se construye . El factor de crecimiento predeterminado es 2.0. La capacidad de Queue siempre aumentará al menos un mínimo de cuatro, independientemente del factor de crecimiento. Por ejemplo, un Queue con un factor de crecimiento de 1,0 siempre aumentará la capacidad en cuatro cuando se requiera una mayor capacidad.

Queue acepta null como un valor válido y permite elementos duplicados.

Para obtener la versión genérica de esta colección, consulte System.Collections.Generic.Queue<T>

Constructores

Nombre Description
Queue()

Inicializa una nueva instancia de la Queue clase que está vacía, tiene la capacidad inicial predeterminada y usa el factor de crecimiento predeterminado.

Queue(ICollection)

Inicializa una nueva instancia de la Queue clase que contiene elementos copiados de la colección especificada, tiene la misma capacidad inicial que el número de elementos copiados y usa el factor de crecimiento predeterminado.

Queue(Int32, Single)

Inicializa una nueva instancia de la Queue clase que está vacía, tiene la capacidad inicial especificada y usa el factor de crecimiento especificado.

Queue(Int32)

Inicializa una nueva instancia de la Queue clase que está vacía, tiene la capacidad inicial especificada y usa el factor de crecimiento predeterminado.

Propiedades

Nombre Description
Count

Obtiene el número de elementos contenidos en .Queue

IsSynchronized

Obtiene un valor que indica si el acceso a Queue está sincronizado (seguro para subprocesos).

SyncRoot

Obtiene un objeto que se puede usar para sincronizar el acceso a la Queue.

Métodos

Nombre Description
Clear()

Quita todos los objetos de .Queue

Clone()

Crea una copia superficial de .Queue

Contains(Object)

Determina si un elemento está en .Queue

CopyTo(Array, Int32)

Copia los Queue elementos en una unidimensional Arrayexistente, empezando por el índice de matriz especificado.

Dequeue()

Quita y devuelve el objeto al principio de .Queue

Enqueue(Object)

Agrega un objeto al final de .Queue

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetEnumerator()

Devuelve un enumerador que recorre en iteración .Queue

GetHashCode()

Actúa como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
Peek()

Devuelve el objeto al principio de Queue sin quitarlo.

Synchronized(Queue)

Devuelve un nuevo Queue que encapsula la cola original y es seguro para subprocesos.

ToArray()

Copia los Queue elementos en una nueva matriz.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
TrimToSize()

Establece la capacidad en el número real de elementos de Queue.

Métodos de extensión

Nombre Description
AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte un IEnumerable en un IQueryable.

Cast<TResult>(IEnumerable)

Convierte los elementos de un IEnumerable al tipo especificado.

OfType<TResult>(IEnumerable)

Filtra los elementos de un IEnumerable en función de un tipo especificado.

Se aplica a

Seguridad para subprocesos

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancia sean seguros para el acceso concurrente.

Para garantizar la seguridad del subproceso de Queue, todas las operaciones deben realizarse a través del contenedor devuelto por el Synchronized(Queue) método .

La enumeración a través de una colección no es intrínsecamente un procedimiento seguro para subprocesos. Incluso cuando se sincroniza una colección, otros subprocesos todavía pueden modificar la colección, lo que hace que el enumerador inicie una excepción. Para garantizar la seguridad de los subprocesos durante la enumeración, puede bloquear la colección durante toda la enumeración o detectar las excepciones resultantes de los cambios realizados por otros subprocesos.

Consulte también