Queue<T> มี property Count คืนค่าจำนวนสมาชิกในคิว ทำงานใน O(1) ใช้ร่วมกับ Enqueue (เพิ่มท้าย), Dequeue (นำหน้า), Peek (ดูหน้า) และ Clear (ลบทั้งหมด)
ตัวอย่างโค้ดที่ 1: Clear และ Count
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
Queue queue = new Queue();
queue.Enqueue("Gary");
queue.Enqueue("Jack");
queue.Enqueue("Ryan");
queue.Enqueue("Kevin");
queue.Enqueue("Mark");
queue.Enqueue("Jack");
queue.Enqueue("Ryan");
queue.Enqueue("Kevin");
Console.Write("Count of elements = ");
Console.WriteLine(queue.Count);
queue.Clear();
Console.Write("Count of elements (updated) = ");
Console.WriteLine(queue.Count);
}
}
ผลลัพธ์
Count of elements = 8
Count of elements (updated) = 0
ตัวอย่างโค้ดที่ 2: เพิ่ม 5 รายการ
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
Queue queue = new Queue();
queue.Enqueue("A");
queue.Enqueue("B");
queue.Enqueue("C");
queue.Enqueue("D");
queue.Enqueue("E");
Console.WriteLine("Count of elements = " + queue.Count);
}
}
ผลลัพธ์
Count of elements = 5
สรุป Property และเมธอด Queue<T>
| Member | คำอธิบาย | Complexity |
|---|---|---|
Count | จำนวนสมาชิก | O(1) |
Enqueue(T) | เพิ่มที่ท้าย | O(1) amortized |
Dequeue() | นำออกจากหน้า | O(1) |
Peek() | ดูหน้าคิว (ไม่ลบ) | O(1) |
Clear() | ลบทั้งหมด | O(n) |
Contains(T) | ตรวจสอบมีอยู่ | O(n) |
ToArray() | คัดลอกเป็น array | O(n) |
TrimExcess() | ลด capacity | O(n) |
Queue vs Stack - ความแตกต่าง
| คุณสมบัติ | Queue (FIFO) | Stack (LIFO) |
|---|---|---|
| เพิ่ม | Enqueue (ท้าย) | Push (บน) |
| นำออก | Dequeue (หน้า) | Pop (บน) |
| ดูค่า | Peek (หน้า) | Peek (บน) |
| ลำดับ foreach | Front → Rear | Top → Bottom |
| Use case | BFS, Job queue, Requests | DFS, Undo, Expression eval |
Thread-safe Version
ใช้ ConcurrentQueue<T> (ใน System.Collections.Concurrent) สำหรับ multi-threaded:
var cq = new ConcurrentQueue();
cq.Enqueue(1);
cq.TryDequeue(out int result);