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>처럼 해시 기반 자료구조를 사용하는 것이 더 효율적입니다.