Queue Klasa

Definicja

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

public ref class Queue : System::Collections::ICollection
public ref class Queue : ICloneable, System::Collections::ICollection
public class Queue : System.Collections.ICollection
public class Queue : ICloneable, System.Collections.ICollection
[System.Serializable]
public 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 IEnumerable
type Queue = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
type Queue = class
    interface ICollection
    interface ICloneable
    interface IEnumerable
Public Class Queue
Implements ICollection
Public Class Queue
Implements ICloneable, ICollection
Dziedziczenie
Queue
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 zaleca się używania klasy Queue w celu nowego rozwoju.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. Jeśli chcesz uzyskać dostęp do kolekcji z wielu wątków jednocześnie, użyj ConcurrentQueue<T> lub ConcurrentStack<T>.Use ConcurrentQueue<T> or ConcurrentStack<T> if you need to access the collection from multiple threads concurrently.

Trzy główne operacje można wykonywać 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 Queue mogą być przechowywane.The capacity of a Queue is the number of elements the Queue can hold. Po dodaniu elementów do Queuepojemność 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 podczas konstruowania 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()

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)

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)

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)

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

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

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

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

Metody

Clear()

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

Clone()

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

Contains(Object)

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

CopyTo(Array, Int32)

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

Dequeue()

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

Enqueue(Object)

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

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetEnumerator()

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

GetHashCode()

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

(Odziedziczone po Object)
GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

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

(Odziedziczone po Object)
Peek()

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

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()

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

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)
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)

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

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)

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

AsQueryable(IEnumerable)

Konwertuje IEnumerable na IQueryable.Converts an IEnumerable to an IQueryable.

Dotyczy

Bezpieczeństwo wątkowe

Publiczne statyczne (Shared w Visual Basic) składowe tego typu są bezpieczne wątkowo.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ą zostać wykonane przez otokę zwracaną 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ż