Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Queue.Contains() 메서드 완벽 정리 - 사용법과 예제 코드

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 등 다른 자료구조와 함께 사용하는 것이 좋습니다.