Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

ลบออบเจ็กต์ทั้งหมดจาก Queue ใน C#

เมธอด Clear() ของ Queue<T> ใช้ลบองค์ประกอบทั้งหมดออกจากคิว ทำให้ Count กลายเป็น 0

ตัวอย่างที่ 1: Queue<string> พื้นฐาน

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        Queue<string> queue = new Queue<string>();
        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("จำนวนองค์ประกอบ = ");
        Console.WriteLine(queue.Count); // 8

        // ลบทั้งหมด
        queue.Clear();

        Console.Write("จำนวนองค์ประกอบ (อัปเดต) = ");
        Console.WriteLine(queue.Count); // 0
    }
}

ผลลัพธ์

จำนวนองค์ประกอบ = 8
จำนวนองค์ประกอบ (อัปเดต) = 0

ตัวอย่างที่ 2: Queue อื่นพร้อมแสดงก่อน/หลัง

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        Queue<string> queue = new Queue<string>();
        queue.Enqueue("A");
        queue.Enqueue("B");
        queue.Enqueue("C");
        queue.Enqueue("D");
        queue.Enqueue("E");

        Console.WriteLine("จำนวนองค์ประกอบ = " + queue.Count); // 5

        queue.Clear();

        Console.Write("จำนวนองค์ประกอบ (อัปเดต) = " + queue.Count); // 0
    }
}

ผลลัพธ์

จำนวนองค์ประกอบ = 5
จำนวนองค์ประกอบ (อัปเดต) = 0

เมธอดสำคัญของ Queue<T> สรุป

เมธอดคำอธิบาย
Enqueue(T)เพิ่มองค์ประกอบที่ท้ายคิว
Dequeue()นำออกและคืนค่าองค์ประกอบหน้าคิว (โยน Exception ถ้าว่าง)
Peek()ดูองค์ประกอบหน้าคิวโดยไม่เอาออก (โยน Exception ถ้าว่าง)
Clear()ลบองค์ประกอบทั้งหมด
Contains(T)ตรวจสอบว่ามีองค์ประกอบนี้ในคิวหรือไม่
Countจำนวนองค์ประกอบในคิว

ข้อสังเกต

  • Clear() เป็น O(n) ต้องเดินทุกโหนดเพื่อลบ reference (ช่วย Garbage Collector)
  • หลัง Clear() คิวยังใช้งานได้ปกติ สามารถ Enqueue ใหม่ได้เลย
  • คิวเป็น FIFO (First-In-First-Out) - เข้าหน้า ออกหลัง
  • มี ConcurrentQueue<T> สำหรับ Multi-threading ใน System.Collections.Concurrent