Queue Klass

Definition

Representerar en första-i-först-ut-samling med objekt.

public ref class Queue : System::Collections::ICollection
public ref class Queue : ICloneable, System::Collections::ICollection
public class Queue : 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
public class Queue : ICloneable, System.Collections.ICollection
type Queue = class
    interface ICollection
    interface IEnumerable
[<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
type Queue = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
Public Class Queue
Implements ICollection
Public Class Queue
Implements ICloneable, ICollection
Arv
Queue
Attribut
Implementeringar

Exempel

I följande exempel visas hur du skapar och lägger till värden i en Queue och hur du skriver ut dess värden.

 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    !

Kommentarer

Den här klassen implementerar en kö som en cirkulär matris. Objekt som lagras i en Queue infogas i ena änden och tas bort från den andra.

Important

Vi rekommenderar inte att du använder Queue klassen för ny utveckling. I stället rekommenderar vi att du använder den allmänna Queue<T> klassen. Mer information finns i Non-generic samlingar bör inte användas på GitHub.

Köer och staplar är användbara när du behöver tillfällig lagring för information. när du kanske vill ta bort ett element när du har hämtat dess värde. Använd Queue om du behöver komma åt informationen i samma ordning som den lagras i samlingen. Använd Stack om du behöver komma åt informationen i omvänd ordning. Använd ConcurrentQueue<T> eller ConcurrentStack<T> om du behöver komma åt samlingen från flera trådar samtidigt.

Tre huvudsakliga åtgärder kan utföras på en Queue och dess element:

  • Enqueue lägger till ett element i slutet av Queue.

  • Dequeue tar bort det äldsta elementet från början av Queue.

  • Peek returnerar det äldsta elementet som är i början av Queue men inte tar bort det från Queue.

Kapaciteten för en Queue är antalet element som Queue kan hållas. När element läggs till i en Queueökar kapaciteten automatiskt efter behov genom omallokering. Kapaciteten kan minskas genom att anropa TrimToSize.

Tillväxtfaktorn är det tal med vilket den aktuella kapaciteten multipliceras när en större kapacitet krävs. Tillväxtfaktorn bestäms när är Queue konstruerad. Standardtillväxtfaktorn är 2,0. Kapaciteten för Queue kommer alltid att öka med minst fyra, oavsett tillväxtfaktor. Till exempel ökar en Queue med en tillväxtfaktor på 1,0 alltid i kapacitet med fyra när en större kapacitet krävs.

Queue null accepterar som ett giltigt värde och tillåter duplicerade element.

Den allmänna versionen av den här samlingen finns i System.Collections.Generic.Queue<T>

Konstruktorer

Name Description
Queue()

Initierar en ny instans av Queue klassen som är tom, har standardinitieringskapaciteten och använder standardtillväxtfaktorn.

Queue(ICollection)

Initierar en ny instans av Queue klassen som innehåller element som kopierats från den angivna samlingen, har samma initiala kapacitet som antalet kopierade element och använder standardtillväxtfaktorn.

Queue(Int32, Single)

Initierar en ny instans av Queue klassen som är tom, har den angivna initiala kapaciteten och använder den angivna tillväxtfaktorn.

Queue(Int32)

Initierar en ny instans av Queue klassen som är tom, har den angivna initiala kapaciteten och använder standardtillväxtfaktorn.

Egenskaper

Name Description
Count

Hämtar antalet element som finns i Queue.

IsSynchronized

Hämtar ett värde som anger om åtkomsten Queue till är synkroniserad (trådsäker).

SyncRoot

Hämtar ett objekt som kan användas för att synkronisera åtkomsten Queuetill .

Metoder

Name Description
Clear()

Tar bort alla objekt från Queue.

Clone()

Skapar en ytlig kopia av Queue.

Contains(Object)

Avgör om ett element finns i Queue.

CopyTo(Array, Int32)

Kopierar elementen Queue till ett befintligt endimensionellt Array, med början vid det angivna matrisindexet.

Dequeue()

Tar bort och returnerar objektet i början av Queue.

Enqueue(Object)

Lägger till ett objekt i slutet av Queue.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetEnumerator()

Returnerar en uppräkning som itererar genom Queue.

GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
Peek()

Returnerar objektet i början av utan att Queue ta bort det.

Synchronized(Queue)

Returnerar en ny Queue som omsluter den ursprungliga kön och är trådsäker.

ToArray()

Kopierar elementen Queue till en ny matris.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
TrimToSize()

Anger kapaciteten till det faktiska antalet element i Queue.

Tilläggsmetoder

Name Description
AsParallel(IEnumerable)

Möjliggör parallellisering av en fråga.

AsQueryable(IEnumerable)

Konverterar en IEnumerable till en IQueryable.

Cast<TResult>(IEnumerable)

Omvandlar elementen i en IEnumerable till den angivna typen.

OfType<TResult>(IEnumerable)

Filtrerar elementen i en IEnumerable baserat på en angiven typ.

Gäller för

Trådsäkerhet

Offentliga statiska (Shared i Visual Basic) medlemmar av den här typen är trådsäkra. Vilka som helst instansmedlemmar garanteras inte att vara trådsäkra.

För att garantera trådsäkerheten för Queuemåste alla åtgärder utföras via omslutningen som returneras av Synchronized(Queue) metoden.

Att räkna upp genom en samling är i sig inte en trådsäker procedur. Även när en samling synkroniseras kan andra trådar fortfarande ändra samlingen, vilket gör att uppräknaren genererar ett undantag. För att garantera trådsäkerheten under uppräkningen kan du antingen låsa samlingen under hela uppräkningen eller fånga undantagen från ändringar som gjorts av andra trådar.

Se även