Queue Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje první in kolekci objektů.
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
Public Class Queue
Implements ICollection
Public Class Queue
Implements ICloneable, ICollection
- Dědičnost
-
Queue
- Atributy
- Implementuje
Příklady
Následující příklad ukazuje, jak vytvořit a přidat hodnoty do Queue a jak vytisknout jeho hodnoty.
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 !
Poznámky
Tato třída implementuje frontu jako kruhové pole. Objekty uložené v Queue se vloží na jeden konec a odeberou se z druhého.
Důležitý
Nedoporučujeme používat třídu Queue
pro nový vývoj. Místo toho doporučujeme použít obecnou třídu Queue<T>. Další informace najdete v tématu Ne generické kolekce by se neměly používat na GitHubu.
Fronty a zásobníky jsou užitečné, když potřebujete dočasné úložiště pro informace; to znamená, že když budete chtít zahodit prvek po načtení jeho hodnoty. Pokud potřebujete získat přístup k informacím ve stejném pořadí, v jakém jsou uložené v kolekci, použijte Queue. Pokud potřebujete získat přístup k informacím v obráceném pořadí, použijte Stack. Pokud potřebujete současně přistupovat ke kolekci z více vláken, použijte ConcurrentQueue<T> nebo ConcurrentStack<T>.
U Queue a jejích prvků je možné provádět tři hlavní operace:
Kapacita Queue je počet prvků, které Queue může obsahovat. Při přidání prvků do Queuese kapacita automaticky zvýší podle potřeby prostřednictvím skutečné polohy. Kapacitu lze snížit voláním TrimToSize.
Faktor růstu je číslo, podle kterého se aktuální kapacita vynásobí, když se vyžaduje větší kapacita. Faktor růstu je určen při vytváření Queue. Výchozí faktor růstu je 2,0. Kapacita Queue se vždy zvýší alespoň o čtyři, bez ohledu na faktor růstu. Například Queue s faktorem růstu 1,0 se při vyžadování větší kapacity vždy zvýší o čtyři.
Queue přijímá null
jako platnou hodnotu a umožňuje duplicitní prvky.
Obecná verze této kolekce najdete v tématu System.Collections.Generic.Queue<T>
Konstruktory
Queue() |
Inicializuje novou instanci Queue třídy, která je prázdná, má výchozí počáteční kapacitu a používá výchozí faktor růstu. |
Queue(ICollection) |
Inicializuje novou instanci Queue třídy, která obsahuje prvky zkopírované ze zadané kolekce, má stejnou počáteční kapacitu jako počet zkopírovaných prvků a používá výchozí faktor růstu. |
Queue(Int32, Single) |
Inicializuje novou instanci Queue třídy, která je prázdná, má zadanou počáteční kapacitu a používá zadaný faktor růstu. |
Queue(Int32) |
Inicializuje novou instanci Queue třídy, která je prázdná, má zadanou počáteční kapacitu a používá výchozí faktor růstu. |
Vlastnosti
Count |
Získá počet prvků obsažených v Queue. |
IsSynchronized |
Získá hodnotu označující, zda je přístup k Queue synchronizován (bezpečné vlákno). |
SyncRoot |
Získá objekt, který lze použít k synchronizaci přístupu k Queue. |
Metody
Clear() |
Odebere všechny objekty z Queue. |
Clone() |
Vytvoří mělkou kopii Queue. |
Contains(Object) |
Určuje, zda je prvek v Queue. |
CopyTo(Array, Int32) |
Zkopíruje Queue elementy do existujícího jednorozměrného Arraypočínaje zadaným indexem pole. |
Dequeue() |
Odebere a vrátí objekt na začátku Queue. |
Enqueue(Object) |
Přidá objekt na konec Queue. |
Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
GetEnumerator() |
Vrátí enumerátor, který iteruje přes Queue. |
GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
Peek() |
Vrátí objekt na začátku Queue bez jeho odebrání. |
Synchronized(Queue) |
Vrátí nový Queue, který zabalí původní frontu a je bezpečný pro vlákno. |
ToArray() |
Zkopíruje prvky Queue do nového pole. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
TrimToSize() |
Nastaví kapacitu na skutečný počet prvků v Queue. |
Metody rozšíření
Cast<TResult>(IEnumerable) |
Přetypuje prvky IEnumerable na zadaný typ. |
OfType<TResult>(IEnumerable) |
Filtruje prvky IEnumerable na základě zadaného typu. |
AsParallel(IEnumerable) |
Umožňuje paralelizaci dotazu. |
AsQueryable(IEnumerable) |
Převede IEnumerable na IQueryable. |
Platí pro
Bezpečný přístup z více vláken
Veřejné statické (Shared
v jazyce Visual Basic) tohoto typu jsou bezpečné pro přístup z více vláken. U všech členů instance není zaručeno, že budou bezpečné pro přístup z více vláken.
Chcete-li zaručit bezpečnost vlákna Queue, musí být všechny operace provedeny prostřednictvím obálky vrácené metodou Synchronized(Queue).
Výčet prostřednictvím kolekce není vnitřně bezpečným postupem pro přístup z více vláken. I když je kolekce synchronizována, ostatní vlákna mohou stále upravovat kolekci, což způsobí, že enumerátor vyvolá výjimku. Chcete-li zaručit bezpečnost vláken během výčtu, můžete buď uzamknout kolekci během celého výčtu, nebo zachytit výjimky vyplývající z změn provedených jinými vlákny.