Bagikan melalui


Queue Kelas

Definisi

Mewakili kumpulan objek pertama masuk dan keluar pertama.

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
Warisan
Queue
Atribut
Penerapan

Contoh

Contoh berikut menunjukkan cara membuat dan menambahkan nilai ke Queue dan cara mencetak nilainya.

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    !

Keterangan

Kelas ini mengimplementasikan antrean sebagai array melingkar. Objek yang disimpan dalam Queue disisipkan di satu ujung dan dihapus dari ujung lainnya.

Penting

Kami tidak menyarankan Anda menggunakan Queue kelas untuk pengembangan baru. Sebagai gantinya, kami sarankan Anda menggunakan kelas generik Queue<T> . Untuk informasi selengkapnya, lihat Koleksi non-generik tidak boleh digunakan di GitHub.

Antrean dan tumpukan berguna ketika Anda memerlukan penyimpanan sementara untuk informasi; yaitu, ketika Anda mungkin ingin membuang elemen setelah mengambil nilainya. Gunakan Queue jika Anda perlu mengakses informasi dalam urutan yang sama dengan yang disimpan dalam koleksi. Gunakan Stack jika Anda perlu mengakses informasi dalam urutan terbalik. Gunakan ConcurrentQueue<T> atau ConcurrentStack<T> jika Anda perlu mengakses koleksi dari beberapa utas secara bersamaan.

Tiga operasi utama dapat dilakukan pada dan Queue elemen-elemennya:

  • Enqueue menambahkan elemen ke akhir Queue.

  • Dequeue menghapus elemen terlama dari awal Queue.

  • Peek mengembalikan elemen terlama yang berada di awal Queue tetapi tidak menghapusnya dari Queue.

Kapasitas adalah Queue jumlah elemen yang dapat ditahan Queue . Karena elemen ditambahkan ke Queue, kapasitas secara otomatis ditingkatkan sesuai kebutuhan melalui realokasi. Kapasitas dapat dikurangi dengan memanggil TrimToSize.

Faktor pertumbuhan adalah jumlah di mana kapasitas saat ini dikalikan ketika kapasitas yang lebih besar diperlukan. Faktor pertumbuhan ditentukan ketika Queue dibangun. Faktor pertumbuhan default adalah 2,0. Kapasitas Queue akan selalu meningkat setidaknya setidaknya empat, terlepas dari faktor pertumbuhannya. Misalnya, Queue dengan faktor pertumbuhan 1,0 akan selalu meningkatkan kapasitas sebesar empat ketika kapasitas yang lebih besar diperlukan.

Queuenull menerima sebagai nilai yang valid dan memungkinkan elemen duplikat.

Untuk versi generik koleksi ini, lihat System.Collections.Generic.Queue<T>

Konstruktor

Queue()

Menginisialisasi instans Queue baru kelas yang kosong, memiliki kapasitas awal default, dan menggunakan faktor pertumbuhan default.

Queue(ICollection)

Menginisialisasi instans Queue baru kelas yang berisi elemen yang disalin dari koleksi yang ditentukan, memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin, dan menggunakan faktor pertumbuhan default.

Queue(Int32)

Menginisialisasi instans Queue baru kelas yang kosong, memiliki kapasitas awal yang ditentukan, dan menggunakan faktor pertumbuhan default.

Queue(Int32, Single)

Menginisialisasi instans Queue baru kelas yang kosong, memiliki kapasitas awal yang ditentukan, dan menggunakan faktor pertumbuhan yang ditentukan.

Properti

Count

Mendapatkan jumlah elemen yang terkandung dalam Queue.

IsSynchronized

Mendapatkan nilai yang menunjukkan apakah akses ke disinkronkan Queue (utas aman).

SyncRoot

Mendapatkan objek yang dapat digunakan untuk menyinkronkan akses ke Queue.

Metode

Clear()

Menghapus semua objek dari Queue.

Clone()

Membuat salinan dangkal dari Queue.

Contains(Object)

Menentukan apakah elemen berada di Queue.

CopyTo(Array, Int32)

Queue Menyalin elemen ke satu dimensi Arrayyang ada, dimulai pada indeks array yang ditentukan.

Dequeue()

Menghapus dan mengembalikan objek di awal Queue.

Enqueue(Object)

Menambahkan objek ke akhir Queue.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetEnumerator()

Mengembalikan enumerator yang melakukan iterasi melalui Queue.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
Peek()

Mengembalikan objek di awal Queue tanpa menghapusnya.

Synchronized(Queue)

Mengembalikan baru Queue yang membungkus antrean asli, dan aman untuk utas.

ToArray()

Menyalin elemen ke Queue array baru.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
TrimToSize()

Mengatur kapasitas ke jumlah elemen aktual di Queue.

Metode Ekstensi

Cast<TResult>(IEnumerable)

Mentransmisikan elemen dari IEnumerable ke jenis yang ditentukan.

OfType<TResult>(IEnumerable)

Memfilter elemen berdasarkan IEnumerable jenis tertentu.

AsParallel(IEnumerable)

Mengaktifkan paralelisasi kueri.

AsQueryable(IEnumerable)

Mengonversi menjadi IEnumerableIQueryable.

Berlaku untuk

Keamanan Thread

Anggota statis publik (Shared dalam Visual Basic) dari jenis ini aman untuk utas. Setiap anggota instans tidak dijamin aman untuk utas.

Untuk menjamin keamanan Queueutas , semua operasi harus dilakukan melalui pembungkus yang dikembalikan oleh Synchronized(Queue) metode .

Menghitung melalui koleksi secara intrinsik bukan prosedur aman utas. Bahkan ketika koleksi disinkronkan, utas lain masih dapat memodifikasi koleksi, yang menyebabkan enumerator melemparkan pengecualian. Untuk menjamin keamanan utas selama enumerasi, Anda dapat mengunci koleksi selama seluruh enumerasi atau menangkap pengecualian yang dihasilkan dari perubahan yang dibuat oleh utas lain.

Lihat juga