Queue Queue Queue Queue Class

Definition

Stellt eine FIFO-Auflistung (First-In-First-Out) von Objekten dar.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
Vererbung
QueueQueueQueueQueue
Attribute
Implementiert

Beispiele

Das folgende Beispiel zeigt das Erstellen und Hinzufügen von Werten für einen Queue und wie Sie die entsprechenden Werte ausgegeben.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
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 'Main

    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 'PrintValues

End Class 'SamplesQueue


' This code produces the following output.
' 
' myQ
'     Count:    3
'     Values:    Hello    World    !

Hinweise

Diese Klasse implementiert eine Warteschlange als zirkuläre Array.This class implements a queue as a circular array. In gespeicherten Objekte eine Queue an einem Ende eingefügt wurden, und entfernt Sie aus den anderen.Objects stored in a Queue are inserted at one end and removed from the other.

Wichtig

Es wird nicht empfohlen, dass Sie verwenden die Queue Klasse für die neue Entwicklung.We don't recommend that you use the Queue class for new development. Stattdessen empfehlen wir die Verwendung von generischen Queue<T> Klasse.Instead, we recommend that you use the generic Queue<T> class. Weitere Informationen finden Sie unter nicht generische Auflistungen nicht verwendet werden sollten auf GitHub.For more information, see Non-generic collections shouldn't be used on GitHub.

Warteschlangen und Stapel sind nützlich, wenn Sie die temporäre Speicherung für Informationen benötigen, d. h. Wenn Sie möchten möglicherweise ein Element nach dem Abrufen von dessen Werts verworfen werden.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. Verwendung Queue bei Bedarf den Zugriff auf Informationen in der gleichen Reihenfolge, dass sie in der Auflistung gespeichert ist.Use Queue if you need to access the information in the same order that it is stored in the collection. Verwendung Stack Wenn Sie die Informationen in umgekehrter Reihenfolge zugreifen müssen.Use Stack if you need to access the information in reverse order. Verwendung ConcurrentQueue<T> oder ConcurrentStack<T> Wenn Sie die Auflistung von mehreren Threads gleichzeitig zugreifen müssen.Use ConcurrentQueue<T> or ConcurrentStack<T> if you need to access the collection from multiple threads concurrently.

Drei wichtigsten Operationen ausgeführt werden können, auf eine Queue und seine Elemente:Three main operations can be performed on a Queue and its elements:

  • Enqueue Fügt ein Element am Ende der Queue.Enqueue adds an element to the end of the Queue.

  • Dequeue Entfernt das älteste Element vom Anfang der Queue.Dequeue removes the oldest element from the start of the Queue.

  • Peek Gibt zurück, das älteste-Element, das am Anfang der Queue jedoch nicht von entfernt die Queue.Peek returns the oldest element that is at the start of the Queue but does not remove it from the Queue.

Die Kapazität einer Queue ist die Anzahl der Elemente der Queue enthalten kann.The capacity of a Queue is the number of elements the Queue can hold. Elemente hinzugefügt werden eine Queue, die Kapazität wird automatisch erhöht, über die neuzuordnung erforderlich.As elements are added to a Queue, the capacity is automatically increased as required through reallocation. Die Kapazität kann verringert werden, durch den Aufruf TrimToSize.The capacity can be decreased by calling TrimToSize.

Der Zuwachsfaktor ist die Anzahl, die mit der die aktuelle Kapazität multipliziert wird, wenn eine höhere Kapazität benötigt wird.The growth factor is the number by which the current capacity is multiplied when a greater capacity is required. Der Zuwachsfaktor wird bestimmt, wenn die Queue erstellt wird.The growth factor is determined when the Queue is constructed. Den Standardzuwachsfaktor ist 2.0.The default growth factor is 2.0. Die Kapazität der Queue wird immer durch mindestens ein Minimum von vier, unabhängig von der Zuwachsfaktor erhöht.The capacity of the Queue will always increase by at least a minimum of four, regardless of the growth factor. Z. B. eine Queue mit einem Zuwachsfaktor von 1,0 wird immer erhöht, Kapazität von vier Wenn eine höhere Kapazität benötigt wird.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 akzeptiert null als gültiger Wert und lässt doppelte Elemente.Queue accepts null as a valid value and allows duplicate elements.

Die generische Version dieser Auflistung finden Sie unter System.Collections.Generic.Queue<T>For the generic version of this collection, see System.Collections.Generic.Queue<T>

Konstruktoren

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

Initialisiert eine neue, leere Instanz der Queue-Klasse, die anfänglich über die Standardkapazität verfügt und den Standardzuwachsfaktor verwendet.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)

Initialisiert eine neue Instanz der Queue-Klasse, die aus der angegebenen Auflistung kopierte Elemente enthält und über eine der Anzahl der kopierten Elemente entsprechende anfängliche Kapazität verfügt sowie den Standardzuwachsfaktor verwendet.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)

Initialisiert eine neue, leere Instanz der Queue-Klasse mit der angegebenen anfänglichen Kapazität und dem Standardzuwachsfaktor.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)

Initialisiert eine neue, leere Instanz der Queue-Klasse mit den angegebenen Werten für die anfängliche Kapazität und den Zuwachsfaktor.Initializes a new instance of the Queue class that is empty, has the specified initial capacity, and uses the specified growth factor.

Eigenschaften

Count Count Count Count

Ruft die Anzahl der Elemente ab, die in Queue enthalten sind.Gets the number of elements contained in the Queue.

IsSynchronized IsSynchronized IsSynchronized IsSynchronized

Ruft einen Wert ab, der angibt, ob der Zugriff auf die Queue synchronisiert (threadsicher) ist.Gets a value indicating whether access to the Queue is synchronized (thread safe).

SyncRoot SyncRoot SyncRoot SyncRoot

Ruft ein Objekt ab, mit dem der Zugriff auf Queue synchronisiert werden kann.Gets an object that can be used to synchronize access to the Queue.

Methoden

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

Entfernt alle Objekte aus dem Queue.Removes all objects from the Queue.

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

Erstellt eine flache Kopie von Queue.Creates a shallow copy of the Queue.

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

Bestimmt, ob sich ein Element in Queue befindet.Determines whether an element is in the Queue.

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

Kopiert die Queue-Elemente in ein vorhandenes eindimensionales Array, beginnend beim angegebenen Arrayindex.Copies the Queue elements to an existing one-dimensional Array, starting at the specified array index.

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

Entfernt das Objekt am Anfang von Queue und gibt es zurück.Removes and returns the object at the beginning of the Queue.

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

Fügt am Ende der Queue ein Objekt hinzu.Adds an object to the end of the Queue.

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

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

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

Gibt einen Enumerator zurück, der die Queue durchläuft.Returns an enumerator that iterates through the Queue.

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

Fungiert als Standardhashfunktion.Serves as the default hash function.

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

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

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

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

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

Gibt das Objekt am Anfang von Queue zurück, ohne es zu entfernen.Returns the object at the beginning of the Queue without removing it.

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

Gibt eine neue Queue zurück, die die ursprüngliche Warteschlange umschließt und threadsicher ist.Returns a new Queue that wraps the original queue, and is thread safe.

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

Kopiert die Queue-Elemente in ein neues Array.Copies the Queue elements to a new array.

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

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

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

Legt die Kapazität auf die Anzahl der tatsächlich in der Queue enthaltenen Elemente fest.Sets the capacity to the actual number of elements in the Queue.

Extension Methods

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

Wandelt die Elemente eines IEnumerable in den angegebenen Typ umCasts the elements of an IEnumerable to the specified type.

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

Filtert die Elemente eines IEnumerable anhand eines angegebenen TypsFilters the elements of an IEnumerable based on a specified type.

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

Ermöglicht die Parallelisierung einer Abfrage.Enables parallelization of a query.

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

Konvertiert eine IEnumerable auf eine IQueryable.Converts an IEnumerable to an IQueryable.

Gilt für:

Threadsicherheit

Öffentliche statische (Shared in Visual Basic) Member dieses Typs sind threadsicher.Public static (Shared in Visual Basic) members of this type are thread safe. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.Any instance members are not guaranteed to be thread safe.

Um die Threadsicherheit zu gewährleisten die Queue, müssen alle Operationen ausgeführt werden, über den Wrapper zurückgegebenes der Synchronized(Queue) Methode.To guarantee the thread safety of the Queue, all operations must be done through the wrapper returned by the Synchronized(Queue) method.

Die Enumeration einer Auflistung ist systemintern keine threadsichere Prozedur.Enumerating through a collection is intrinsically not a thread-safe procedure. Selbst wenn eine Auflistung synchronisiert wird, besteht die Möglichkeit, dass andere Threads sie ändern. Dies führt dazu, dass der Enumerator eine Ausnahme auslöst.Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. Um während der Enumeration Threadsicherheit zu gewährleisten, können Sie entweder die Auflistung während der gesamten Enumeration sperren oder die Ausnahmen, die aus von anderen Threads stammenden Änderungen resultieren, abfangen.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.

Siehe auch