Queue Queue Queue Queue Class

Definicja

Reprezentuje pierwszą kolekcję obiektów w pierwszej kolejności.Represents a first-in, first-out collection of objects.

public ref class Queue : ICloneable, System::Collections::ICollection
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class Queue : ICloneable, System.Collections.ICollection
type Queue = class
    interface ICollection
    interface ICloneable
    interface IEnumerable
Public Class Queue
Implements ICloneable, ICollection
Dziedziczenie
QueueQueueQueueQueue
Atrybuty
Implementuje

Przykłady

Poniższy przykład pokazuje, jak utworzyć i dodać wartości do Queue i jak drukować wartości.The following example shows how to create and add values to a Queue and how to print out its values.

using namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myCollection );
int main()
{
   
   // Creates and initializes a new Queue.
   Queue^ myQ = gcnew 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 );
}

void PrintValues( IEnumerable^ myCollection )
{
   IEnumerator^ myEnum = myCollection->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Object^ obj = safe_cast<Object^>(myEnum->Current);
      Console::Write( "    {0}", obj );
   }

   Console::WriteLine();
}

/* 
 This code produces the following output.
 
 myQ
     Count:    3
     Values:    Hello    World    !
*/
 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    !

Uwagi

Ta klasa implementuje kolejkę jako tablicę cykliczną.This class implements a queue as a circular array. Obiekty przechowywane w Queue są wstawiane na jednym końcu i usuwane z innych.Objects stored in a Queue are inserted at one end and removed from the other.

Ważne

Nie zalecamy używania klasy Queue w celu tworzenia nowych rozwiązań.We don't recommend that you use the Queue class for new development. Zamiast tego zaleca się użycie klasy generycznej Queue<T>.Instead, we recommend that you use the generic Queue<T> class. Aby uzyskać więcej informacji, zobacz kolekcje nieogólne nie mogą być używane w serwisie GitHub.For more information, see Non-generic collections shouldn't be used on GitHub.

Kolejki i stosy są przydatne, gdy potrzebujesz tymczasowego magazynu, aby uzyskać informacje; oznacza to, że jeśli chcesz odrzucić element po pobraniu jego wartości.Queues and stacks are useful when you need temporary storage for information; that is, when you might want to discard an element after retrieving its value. Użyj Queue, jeśli chcesz uzyskać dostęp do informacji w tej samej kolejności, w której jest przechowywany w kolekcji.Use Queue if you need to access the information in the same order that it is stored in the collection. Użyj Stack, jeśli chcesz uzyskać dostęp do informacji w odwrotnej kolejności.Use Stack if you need to access the information in reverse order. Użyj ConcurrentQueue<T> lub ConcurrentStack<T>, jeśli chcesz uzyskać dostęp do kolekcji z wielu wątków jednocześnie.Use ConcurrentQueue<T> or ConcurrentStack<T> if you need to access the collection from multiple threads concurrently.

Trzy główne operacje można wykonać na Queue i jego elementach:Three main operations can be performed on a Queue and its elements:

  • Enqueue dodaje element na końcu Queue.Enqueue adds an element to the end of the Queue.

  • Dequeue usuwa najstarszego elementu od początku Queue.Dequeue removes the oldest element from the start of the Queue.

  • Peek zwraca najstarszy element, który znajduje się na początku Queue, ale nie usuwa go z Queue.Peek returns the oldest element that is at the start of the Queue but does not remove it from the Queue.

Pojemność Queue to liczba elementów, które mogą być przechowywane w Queue.The capacity of a Queue is the number of elements the Queue can hold. Po dodaniu elementów do Queue pojemność jest automatycznie zwiększana zgodnie z wymaganiami ponownej alokacji.As elements are added to a Queue, the capacity is automatically increased as required through reallocation. Wydajność można zmniejszyć, wywołując TrimToSize.The capacity can be decreased by calling TrimToSize.

Współczynnik wzrostu to liczba, o jaką mnożona jest bieżąca pojemność, gdy wymagana jest większa pojemność.The growth factor is the number by which the current capacity is multiplied when a greater capacity is required. Współczynnik wzrostu jest określany, gdy jest konstruowany Queue.The growth factor is determined when the Queue is constructed. Domyślny współczynnik wzrostu to 2,0.The default growth factor is 2.0. Pojemność Queue będzie zawsze zwiększana o co najmniej cztery, niezależnie od współczynnika wzrostu.The capacity of the Queue will always increase by at least a minimum of four, regardless of the growth factor. Na przykład Queue ze współczynnikiem wzrostu 1,0 będzie zawsze zwiększać wydajność o cztery, gdy wymagana jest większa pojemność.For example, a Queue with a growth factor of 1.0 will always increase in capacity by four when a greater capacity is required.

Queue akceptuje null jako prawidłową wartość i umożliwia duplikowanie elementów.Queue accepts null as a valid value and allows duplicate elements.

W przypadku ogólnej wersji tej kolekcji zobacz System.Collections.Generic.Queue<T>For the generic version of this collection, see System.Collections.Generic.Queue<T>

Konstruktory

Queue() Queue() Queue() Queue()

Inicjuje nowe wystąpienie klasy Queue, która jest pusta, ma domyślną pojemność początkową i używa domyślnego współczynnika wzrostu.Initializes a new instance of the Queue class that is empty, has the default initial capacity, and uses the default growth factor.

Queue(ICollection) Queue(ICollection) Queue(ICollection) Queue(ICollection)

Inicjuje nowe wystąpienie klasy Queue, która zawiera elementy skopiowane z określonej kolekcji, ma taką samą początkową pojemność jak liczba skopiowanych elementów i używa domyślnego współczynnika wzrostu.Initializes a new instance of the Queue class that contains elements copied from the specified collection, has the same initial capacity as the number of elements copied, and uses the default growth factor.

Queue(Int32) Queue(Int32) Queue(Int32) Queue(Int32)

Inicjuje nowe wystąpienie klasy Queue, która jest pusta, ma określoną pojemność początkową i używa domyślnego współczynnika wzrostu.Initializes a new instance of the Queue class that is empty, has the specified initial capacity, and uses the default growth factor.

Queue(Int32, Single) Queue(Int32, Single) Queue(Int32, Single) Queue(Int32, Single)

Inicjuje nowe wystąpienie klasy Queue, która jest pusta, ma określoną pojemność początkową i używa określonego czynnika wzrostu.Initializes a new instance of the Queue class that is empty, has the specified initial capacity, and uses the specified growth factor.

Właściwości

Count Count Count Count

Pobiera liczbę elementów zawartych w Queue.Gets the number of elements contained in the Queue.

IsSynchronized IsSynchronized IsSynchronized IsSynchronized

Pobiera wartość wskazującą, czy dostęp do Queue jest synchronizowany (bezpieczny wątkowo).Gets a value indicating whether access to the Queue is synchronized (thread safe).

SyncRoot SyncRoot SyncRoot SyncRoot

Pobiera obiekt, którego można użyć do synchronizowania dostępu do Queue.Gets an object that can be used to synchronize access to the Queue.

Metody

Clear() Clear() Clear() Clear()

Usuwa wszystkie obiekty z Queue.Removes all objects from the Queue.

Clone() Clone() Clone() Clone()

Tworzy skróconą kopię Queue.Creates a shallow copy of the Queue.

Contains(Object) Contains(Object) Contains(Object) Contains(Object)

Określa, czy element znajduje się w Queue.Determines whether an element is in the Queue.

CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32)

Kopiuje elementy Queue do istniejącej jednowymiarowej Array, rozpoczynając od określonego indeksu tablicy.Copies the Queue elements to an existing one-dimensional Array, starting at the specified array index.

Dequeue() Dequeue() Dequeue() Dequeue()

Usuwa i zwraca obiekt na początku Queue.Removes and returns the object at the beginning of the Queue.

Enqueue(Object) Enqueue(Object) Enqueue(Object) Enqueue(Object)

Dodaje obiekt na końcu Queue.Adds an object to the end of the Queue.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Zwraca moduł wyliczający, który wykonuje iterację przez Queue.Returns an enumerator that iterates through the Queue.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Type Pobiera bieżące wystąpienie.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Tworzy skróconą kopię bieżącego Objectelementu.Creates a shallow copy of the current Object.

(Inherited from Object)
Peek() Peek() Peek() Peek()

Zwraca obiekt na początku Queue bez usuwania go.Returns the object at the beginning of the Queue without removing it.

Synchronized(Queue) Synchronized(Queue) Synchronized(Queue) Synchronized(Queue)

Zwraca nowy Queue, który otacza oryginalną kolejkę i jest bezpieczny dla wątków.Returns a new Queue that wraps the original queue, and is thread safe.

ToArray() ToArray() ToArray() ToArray()

Kopiuje elementy Queue do nowej tablicy.Copies the Queue elements to a new array.

ToString() ToString() ToString() ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Inherited from Object)
TrimToSize() TrimToSize() TrimToSize() TrimToSize()

Ustawia pojemność na rzeczywistą liczbę elementów w Queue.Sets the capacity to the actual number of elements in the Queue.

Metody rozszerzania

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Rzutuje elementy IEnumerable elementu do określonego typu.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

Filtruje elementy IEnumerable w oparciu o określony typ.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

Włącza przetwarzanie równoległe zapytania.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

IEnumerable KonwertujeIQueryabledo.Converts an IEnumerable to an IQueryable.

Dotyczy

Bezpieczeństwo wątkowe

Publiczne statyczne (Shared w Visual Basic) składowe tego typu są bezpieczne dla wątków.Public static (Shared in Visual Basic) members of this type are thread safe. Wystąpienia elementów członkowskich nie dają gwarancji bezpieczeństwa wątków.Any instance members are not guaranteed to be thread safe.

Aby zagwarantować bezpieczeństwo wątku Queue, wszystkie operacje muszą być wykonywane przez otokę zwróconą przez metodę Synchronized(Queue).To guarantee the thread safety of the Queue, all operations must be done through the wrapper returned by the Synchronized(Queue) method.

Wyliczanie w kolekcji nie jest wewnętrznie procedurą odporną na wielowątkowość.Enumerating through a collection is intrinsically not a thread-safe procedure. Nawet gdy kolekcja jest synchronizowana, inne wątki nadal mogą ją modyfikować. Powoduje to zgłaszanie wyjątku przez moduł wyliczający.Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, można zablokować kolekcję podczas całego procesu wyliczania albo rejestrować wyjątki wynikłe ze zmian wprowadzanych przez inne wątków.To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

Zobacz też