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

เมธอด Queue.Contains() ใน C#

เมธอด Queue<T>.Contains() ใน C# ใช้ตรวจสอบว่ามีอ็อบเจ็กต์ที่ระบุอยู่ใน Queue หรือไม่

ไวยากรณ์ (Syntax)

public virtual bool Contains(object obj);
  • obj — อ็อบเจ็กต์ที่ต้องการค้นหาใน Queue
  • คืนค่า true หากพบ, false หากไม่พบ

ตัวอย่างที่ 1: Queue สตริง — ค้นหา "Jack" (พบ)

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("Count of elements = ");
        Console.WriteLine(queue.Count);

        Console.WriteLine("Does the queue has element Jack? = " + queue.Contains("Jack"));

        queue.Clear();
        Console.Write("Count of elements (updated) = ");
        Console.WriteLine(queue.Count);
    }
}

ผลลัพธ์

Count of elements = 8
Does the queue has element Jack? = True
Count of elements (updated) = 0

ตัวอย่างที่ 2: Queue จำนวนเต็ม — ค้นหา 500 (ไม่พบ)

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        Queue<int> queue = new Queue<int>();
        queue.Enqueue(100);
        queue.Enqueue(200);
        queue.Enqueue(300);

        Console.Write("Count of elements = ");
        Console.WriteLine(queue.Count);

        Console.WriteLine("Does the queue has element 500? = " + queue.Contains(500));

        queue.Clear();
        Console.Write("Count of elements (updated) = ");
        Console.WriteLine(queue.Count);
    }
}

ผลลัพธ์

Count of elements = 3
Does the queue has element 500? = False
Count of elements (updated) = 0

สรุป

  • Contains(T item) (generic) หรือ Contains(object) (non-generic) ตรวจสอบว่ามีสมาชิกใน Queue หรือไม่
  • Queue เป็นโครงสร้าง FIFO (First In, First Out) — Dequeue() นำออกจากหน้า, Enqueue() เพิ่มที่หลัง
  • Contains() ทำ linear search — Complexity O(n)
  • Queue อนุญาตค่าซ้ำ (duplicate values) — Contains จะคืน true หากพบอย่างน้อย 1 ตัว
  • เมธอดหลัก: Enqueue, Dequeue, Peek, Contains, Clear, Count
  • Non-generic Queue (System.Collections) ล้าสแล้ว — ควรใช้ Queue<T> (System.Collections.Generic)

ตัวอย่างเพิ่มเติม: ใช้ Contains ก่อน Dequeue

var q = new Queue<string>();
q.Enqueue("A");
q.Enqueue("B");
q.Enqueue("C");

if (q.Contains("B"))
{
    Console.WriteLine("B is in queue");
    // หมายเหตุ: Contains ไม่ลบสมาชิก — ต้อง Dequeue() เพื่อนำออก
}