Queue Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje pierwszą, pierwszą kolekcję obiektów.
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.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class Queue : ICloneable, System.Collections.ICollection
type Queue = class
interface ICollection
interface IEnumerable
type Queue = class
interface ICollection
interface IEnumerable
interface ICloneable
[<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
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
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
W poniższym przykładzie pokazano, jak utworzyć i dodać wartości do elementu Queue oraz jak wydrukować jego wartości.
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ą. Obiekty przechowywane w obiekcie Queue są wstawiane na jednym końcu i usuwane z drugiego.
Ważne
Nie zalecamy używania Queue
klasy do nowego programowania. Zamiast tego zalecamy użycie klasy ogólnej Queue<T> . Aby uzyskać więcej informacji, zobacz Kolekcje inne niż ogólne nie powinny być używane w GitHub.
Kolejki i stosy są przydatne, gdy potrzebujesz tymczasowego magazynu w celu uzyskania informacji; oznacza to, że po pobraniu jego wartości można odrzucić element. Użyj polecenia Queue , jeśli musisz uzyskać dostęp do informacji w tej samej kolejności, która jest przechowywana w kolekcji. Użyj polecenia Stack , jeśli chcesz uzyskać dostęp do informacji w odwrotnej kolejności. Użyj ConcurrentQueue<T> polecenia lub ConcurrentStack<T> jeśli musisz uzyskać dostęp do kolekcji z wielu wątków jednocześnie.
Trzy główne operacje można wykonać na elemecie Queue i jego elementach:
Dequeue usuwa najstarszy element od początku Queueelementu .
Peek zwraca najstarszy element, który znajduje się na początku elementu Queue , ale nie usuwa go z elementu Queue.
Pojemność elementu Queue to liczba elementów, które Queue może pomieścić. Ponieważ elementy są dodawane do elementu Queue, pojemność jest automatycznie zwiększana zgodnie z wymaganiami za pośrednictwem reallocation. Pojemność można zmniejszyć przez wywołanie metody TrimToSize.
Współczynnik wzrostu to liczba, za pomocą której jest mnożona bieżąca pojemność, gdy wymagana jest większa pojemność. Współczynnik wzrostu jest określany podczas konstruowania Queue . Domyślny współczynnik wzrostu wynosi 2,0. Pojemność obiektu Queue zawsze wzrośnie o co najmniej cztery, niezależnie od współczynnika wzrostu. Na przykład Queue współczynnik wzrostu wynoszący 1,0 zawsze zwiększa pojemność o cztery, gdy wymagana jest większa pojemność.
Queuenull
akceptuje jako prawidłową wartość i zezwala na zduplikowane elementy.
Aby uzyskać ogólną wersję tej kolekcji, zobacz System.Collections.Generic.Queue<T>
Konstruktory
Queue() |
Inicjuje nowe wystąpienie Queue klasy, która jest pusta, ma domyślną pojemność początkową i używa domyślnego współczynnika wzrostu. |
Queue(ICollection) |
Inicjuje nowe wystąpienie Queue klasy zawierającej elementy skopiowane z określonej kolekcji, ma taką samą pojemność początkową jak liczba skopiowanych elementów i używa domyślnego współczynnika wzrostu. |
Queue(Int32) |
Inicjuje nowe wystąpienie Queue klasy, która jest pusta, ma określoną pojemność początkową i używa domyślnego współczynnika wzrostu. |
Queue(Int32, Single) |
Inicjuje nowe wystąpienie Queue klasy, która jest pusta, ma określoną pojemność początkową i używa określonego współczynnika wzrostu. |
Właściwości
Count |
Pobiera liczbę elementów zawartych w słowniku Queue. |
IsSynchronized |
Pobiera wartość wskazującą, czy dostęp do elementu Queue jest synchronizowany (bezpieczny wątk). |
SyncRoot |
Pobiera obiekt, który może służyć do synchronizowania dostępu do obiektu Queue. |
Metody
Clear() |
Usuwa wszystkie obiekty z obiektu Queue. |
Clone() |
Tworzy płytkią kopię elementu Queue. |
Contains(Object) |
Określa, czy element znajduje się w elemecie Queue. |
CopyTo(Array, Int32) |
Kopiuje Queue elementy do istniejącego jednowymiarowego Array, zaczynając od określonego indeksu tablicy. |
Dequeue() |
Usuwa obiekt i zwraca go na początku Queueobiektu . |
Enqueue(Object) |
Dodaje obiekt na końcu obiektu Queue. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetEnumerator() |
Zwraca moduł wyliczający, który iteruje przez element Queue. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
Peek() |
Zwraca obiekt na początku obiektu Queue bez jego usuwania. |
Synchronized(Queue) |
Zwraca nowy Queue element, który opakowuje oryginalną kolejkę i jest bezpieczny wątkiem. |
ToArray() |
Kopiuje Queue elementy do nowej tablicy. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
TrimToSize() |
Ustawia pojemność na rzeczywistą liczbę elementów w obiekcie Queue. |
Metody rozszerzania
Cast<TResult>(IEnumerable) |
Rzutuje elementy elementu IEnumerable na określony typ. |
OfType<TResult>(IEnumerable) |
Filtruje elementy IEnumerable elementu na podstawie określonego typu. |
AsParallel(IEnumerable) |
Umożliwia równoległość zapytania. |
AsQueryable(IEnumerable) |
Konwertuje element IEnumerable na .IQueryable |
Dotyczy
Bezpieczeństwo wątkowe
Publiczne statyczne (Shared
w Visual Basic) elementy członkowskie tego typu są bezpieczne wątkiem. Wystąpienia elementów członkowskich nie dają gwarancji bezpieczeństwa wątków.
Aby zagwarantować bezpieczeństwo wątków elementu Queue, wszystkie operacje należy wykonać za pośrednictwem otoki zwróconej przez metodę Synchronized(Queue) .
Wyliczanie w kolekcji nie jest wewnętrznie procedurą odporną na wielowątkowość. Nawet gdy kolekcja jest synchronizowana, inne wątki nadal mogą ją modyfikować. Powoduje to zgłaszanie wyjątku przez moduł wyliczający. 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.