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

C# 컬렉션에 특정 요소가 포함되어 있는지 확인하는 방법

C#에서 Collection<T> 클래스에 특정 요소가 포함되어 있는지 확인하려면 Contains() 메서드를 사용합니다. 이 메서드는 지정한 요소가 컬렉션 내에 존재하면 true를, 존재하지 않으면 false를 반환합니다.

Contains() 메서드는 컬렉션을 처음부터 끝까지 순차적으로 검색하는 선형 탐색 방식으로 동작하며, 값 형식(int, double 등)은 값을 비교하고 참조 형식(string 등)은 기본적으로 문자열 내용을 비교합니다.

예제 1: 정수 컬렉션에서 요소 확인하기

using System;
using System.Collections.ObjectModel;
public class Demo {
   public static void Main(){
      Collection<int> col = new Collection<int>();
      col.Add(10);
      col.Add(20);
      col.Add(30);
      col.Add(40);
      col.Add(50);
      col.Add(60);
      col.Add(70);
      col.Add(80);
      Console.WriteLine("컬렉션에 저장된 요소들...");
      foreach(int val in col){
         Console.WriteLine(val);
      }
      Console.WriteLine("컬렉션에 요소 70이 있습니까? = "+col.Contains(70));
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

컬렉션에 저장된 요소들...
10
20
30
40
50
60
70
80
컬렉션에 요소 70이 있습니까? = True

숫자 70은 Add() 메서드로 컬렉션에 추가된 요소이므로 Contains(70) 호출 시 True가 반환된 것을 확인할 수 있습니다.

예제 2: 문자열 컬렉션에서 요소 확인하기

이번에는 문자열 컬렉션에서 존재하지 않는 값을 조회하는 예제를 살펴보겠습니다.

using System;
using System.Collections.ObjectModel;
public class Demo {
   public static void Main(){
      Collection<string> col = new Collection<string>();
      col.Add("John");
      col.Add("Gary");
      col.Add("Tom");
      col.Add("Brad");
      col.Add("Katie");
      col.Add("Andy");
      col.Add("Nathan");
      Console.WriteLine("컬렉션에 저장된 요소들...");
      foreach(string val in col){
         Console.WriteLine(val);
      }
      Console.WriteLine("컬렉션에 'Bradley'라는 값이 있습니까? = "+col.Contains("Bradley"));
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

컬렉션에 저장된 요소들...
John
Gary
Tom
Brad
Katie
Andy
Nathan
컬렉션에 'Bradley'라는 값이 있습니까? = False

컬렉션에는 "Brad"라는 값만 저장되어 있고 "Bradley"는 존재하지 않기 때문에 Contains("Bradley")는 False를 반환합니다. 문자열 비교 시 대소문자도 구분한다는 점에 유의하세요.

정리

Collection<T>에서 요소 존재 여부를 확인할 때는 Contains() 메서드 하나면 충분합니다. 다만 요소 개수가 많은 경우 성능을 고려해야 하며, 빈번한 검색이 필요하다면 HashSet<T>처럼 해시 기반 자료구조를 사용하는 것이 더 효율적입니다.