C#의 Queue.Contains() 메서드는 큐(Queue)에 특정 요소가 존재하는지 여부를 확인하는 데 사용됩니다. 해당 요소가 큐 안에 있으면 true를, 없으면 false를 반환합니다.
문법(Syntax)
Queue.Contains() 메서드의 기본 문법은 다음과 같습니다.
public virtual bool Contains (object ob);
여기서 매개변수 ob는 큐에서 찾고자 하는 객체(Object)를 의미합니다.
주요 특징
- 반환 타입은
bool이며, 요소가 존재하면 true, 존재하지 않으면 false를 반환합니다. - 선형 검색 방식으로 동작하므로 시간 복잡도는 O(n)입니다.
- null 값을 전달할 수 있으며, 참조 타입 비교에는 Object.Equals 메서드가 사용됩니다.
예제 1: 문자열 Queue에서 요소 찾기
다음은 문자열을 저장하는 Queue에서 Contains() 메서드를 사용하는 예제입니다.
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);
Console.WriteLine("큐에 Jack이 존재하는가? = "+queue.Contains("Jack"));
queue.Clear();
Console.Write("요소 개수(갱신 후) = ");
Console.WriteLine(queue.Count);
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Count of elements = 8 Does the queue has element Jack? = True Count of elements (updated) = 0
위 예제에서 큐에 "Jack"이라는 요소가 실제로 존재하기 때문에 Contains() 메서드가 True를 반환한 것을 확인할 수 있습니다. 또한 Clear() 메서드 호출 후 큐의 모든 요소가 제거되어 개수가 0으로 변경되었습니다.
예제 2: 정수 Queue에서 요소 찾기
이번에는 정수형 Queue에서 존재하지 않는 요소를 검색하는 예제입니다.
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("요소 개수 = ");
Console.WriteLine(queue.Count);
Console.WriteLine("큐에 500이 존재하는가? = "+queue.Contains(500));
queue.Clear();
Console.Write("요소 개수(갱신 후) = ");
Console.WriteLine(queue.Count);
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Count of elements = 3 Does the queue has element 500? = False Count of elements (updated) = 0
두 번째 예제에서는 큐에 100, 200, 300만 저장되어 있고 500은 존재하지 않기 때문에 Contains() 메서드가 False를 반환했습니다.
정리
C#의 Queue.Contains() 메서드는 큐 내부에 특정 값이 있는지 빠르게 확인할 수 있는 간편한 방법입니다. 다만 선형 검색으로 동작하기 때문에 대용량 데이터에서 반복적으로 호출해야 하는 경우 성능을 고려하여 HashSet 등 다른 자료구조와 함께 사용하는 것이 좋습니다.