C#에서 SortedSet과 특정 컬렉션이 서로 공통된 요소를 가지고 있는지 확인해야 하는 경우가 있습니다. 이럴 때 사용할 수 있는 것이 바로 Overlaps() 메서드입니다.
Overlaps() 메서드는 현재 SortedSet과 지정된 컬렉션 사이에 최소 하나 이상의 공통 요소가 존재하는지 판단합니다. 공통 요소가 있으면 true, 없으면 false를 반환합니다.
Overlaps() 메서드의 기본 문법
public bool Overlaps (System.Collections.Generic.IEnumerable<T> other);
매개변수 other에는 현재 집합과 비교할 컬렉션을 전달하며, 반환값은 두 컬렉션이 공통 요소를 공유하는지 여부를 나타내는 불리언(Boolean) 값입니다.
예제 1: 공통 요소가 있는 경우
다음 예제에서는 두 개의 SortedSet을 생성하고 동일한 요소들을 추가한 뒤, Overlaps() 메서드로 공통 요소 존재 여부를 확인합니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
SortedSet<int> set1 = new SortedSet<int>();
set1.Add(100);
set1.Add(200);
set1.Add(300);
set1.Add(400);
set1.Add(500);
set1.Add(600);
SortedSet<int> set2 = new SortedSet<int>();
set2.Add(100);
set2.Add(200);
set2.Add(300);
set2.Add(400);
set2.Add(500);
set2.Add(600);
Console.WriteLine("공통 요소가 존재합니까? = " + set1.Overlaps(set2));
}
}출력 결과
공통 요소가 존재합니까? = True
두 집합이 100부터 600까지 모든 요소를 공유하고 있으므로 결과는 True가 출력됩니다.
예제 2: 공통 요소가 없는 경우
이번에는 서로 다른 값을 가진 두 개의 SortedSet을 비교해 보겠습니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
SortedSet<int> set1 = new SortedSet<int>();
set1.Add(100);
set1.Add(200);
set1.Add(300);
SortedSet<int> set2 = new SortedSet<int>();
set2.Add(450);
set2.Add(550);
set2.Add(650);
set2.Add(750);
set2.Add(800);
Console.WriteLine("공통 요소가 존재합니까? = " + set1.Overlaps(set2));
}
}출력 결과
공통 요소가 존재합니까? = False
set1에는 100~300 사이의 값이, set2에는 450~800 사이의 값이 저장되어 있어 두 집합 사이에 겹치는 요소가 전혀 없습니다. 따라서 결과는 False가 됩니다.
정리
C#의 SortedSet<T>.Overlaps() 메서드는 두 컬렉션 간의 교집합 존재 여부를 빠르고 간편하게 확인할 수 있는 유용한 도구입니다. 별도의 반복문을 작성하지 않고도 한 줄의 코드로 공통 요소 검사를 수행할 수 있어 코드의 가독성과 효율성을 높여줍니다.