Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Xóa tất cả đối tượng khỏi Queue trong C#

Để xóa tất cả các phần tử khỏi Queue<T> trong C#, bạn sử dụng phương thức Clear(). Phương thức này loại bỏ tất cả các đối tượng khỏi hàng đợi và đặt Count về 0.

Ví dụ 1: Xóa tất cả phần tử khỏi 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("Số lượng phần tử = ");
        Console.WriteLine(queue.Count);

        // Xóa tất cả phần tử
        queue.Clear();

        Console.Write("Số lượng phần tử (đã cập nhật) = ");
        Console.WriteLine(queue.Count);
    }
}

Kết quả

Số lượng phần tử = 8
Số lượng phần tử (đã cập nhật) = 0

Ví dụ 2: Queue với ít phần tử hơn

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("Số lượng phần tử = " + queue.Count);

        queue.Clear();

        Console.Write("Số lượng phần tử (đã cập nhật) = " + queue.Count);
    }
}

Kết quả

Số lượng phần tử = 5
Số lượng phần tử (đã cập nhật) = 0

Các phương thức liên quan của Queue<T>

Phương thức Mô tả
Enqueue(T item) Thêm phần tử vào cuối hàng đợi
Dequeue() Loại bỏ và trả về phần tử ở đầu hàng đợi
Peek() Trả về phần tử ở đầu mà không loại bỏ
Clear() Xóa tất cả phần tử
Contains(T item) Kiểm tra phần tử có tồn tại
ToArray() Sao chép sang mảng mới

Ví dụ đầy đủ: Các thao tác cơ bản

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        Queue<string> queue = new Queue<string>();
        
        // Thêm phần tử
        queue.Enqueue("First");
        queue.Enqueue("Second");
        queue.Enqueue("Third");
        
        Console.WriteLine("Queue ban đầu: " + string.Join(", ", queue));
        Console.WriteLine("Count: " + queue.Count);
        
        // Xem phần tử đầu (không xóa)
        Console.WriteLine("Peek: " + queue.Peek());
        
        // Lấy và xóa phần tử đầu
        Console.WriteLine("Dequeue: " + queue.Dequeue());
        Console.WriteLine("Sau Dequeue: " + string.Join(", ", queue));
        
        // Kiểm tra tồn tại
        Console.WriteLine("Contains 'Second': " + queue.Contains("Second"));
        
        // Xóa tất cả
        queue.Clear();
        Console.WriteLine("Sau Clear - Count: " + queue.Count);
    }
}

Lưu ý quan trọng

  • Clear() chạy trong O(n) thời gian
  • Sau khi Clear(), Count = 0 nhưng Capacity không thay đổi
  • Queue<T> là generic type-safe, khuyến nghị dùng thay vì Queue non-generic
  • Tuân theo nguyên tắc FIFO (First In, First Out)
  • Ném InvalidOperationException nếu Dequeue() hoặc Peek() trên queue rỗng

Queue non-generic (cũ)

using System.Collections;

Queue queue = new Queue();
queue.Enqueue("Item");
queue.Clear(); // Tương tự