Queue Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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:
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.