เมธอด 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() เพื่อนำออก
}