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

C#에서 HashSet이 지정된 컬렉션의 부분 집합인지 확인하는 방법

C#에서 HashSet이 지정된 컬렉션의 부분 집합(subset)인지 확인하려면 IsSubsetOf() 메서드를 사용합니다. 이 메서드는 HashSet 개체가 매개변수로 전달된 컬렉션의 부분 집합인지 여부를 판단하여, 모든 요소가 해당 컬렉션에 포함되어 있으면 true를, 하나라도 포함되지 않으면 false를 반환합니다.

예제 1: 부분 집합이 아닌 경우

먼저 set1의 요소가 set2에 모두 포함되지 않은 경우를 살펴보겠습니다.

using System;
using System.Collections.Generic;
public class Demo {
   public static void Main(){
      HashSet<string> set1 = new HashSet<string>();
      set1.Add("EF");
      set1.Add("OP");
      Console.WriteLine("HashSet1의 요소");
      foreach(string val in set1){
         Console.WriteLine(val);
      }
      HashSet<string> set2 = new HashSet<string>();
      set2.Add("KL");
      set2.Add("MN");
      set2.Add("OP");
      set2.Add("QR");
      Console.WriteLine("HashSet2의 요소");
      foreach(string val in set2){
         Console.WriteLine(val);
      }
      Console.WriteLine("set1은 set2의 부분 집합인가? "+set1.IsSubsetOf(set2));
   }
}

실행 결과

HashSet1의 요소
EF
OP
HashSet2의 요소
KL
MN
OP
QR
set1은 set2의 부분 집합인가? False

위 실행 결과를 보면 set1의 요소 중 "EF"가 set2에 포함되어 있지 않기 때문에 False가 출력됩니다.

예제 2: 부분 집합인 경우

이번에는 set1의 모든 요소가 set2에 포함되어 있는 경우를 살펴보겠습니다.

using System;
using System.Collections.Generic;
public class Demo {
   public static void Main(){
      HashSet<string> set1 = new HashSet<string>();
      set1.Add("EF");
      set1.Add("OP");
      Console.WriteLine("HashSet1의 요소");
      foreach(string val in set1){
         Console.WriteLine(val);
      }
      HashSet<string> set2 = new HashSet<string>();
      set2.Add("EF");
      set2.Add("OP");
      set2.Add("QR");
      Console.WriteLine("HashSet2의 요소");
      foreach(string val in set2){
         Console.WriteLine(val);
      }
      Console.WriteLine("set1은 set2의 부분 집합인가? "+set1.IsSubsetOf(set2));
   }
}

실행 결과

HashSet1의 요소
EF
OP
HashSet2의 요소
EF
OP
QR
set1은 set2의 부분 집합인가? True

이번에는 set1의 모든 요소("EF", "OP")가 set2에 포함되어 있으므로 True가 출력됩니다.

정리

IsSubsetOf() 메서드는 두 컬렉션 간의 포함 관계를 간단하게 확인할 수 있는 유용한 기능입니다. HashSet뿐만 아니라 IEnumerable 형식의 컬렉션을 매개변수로 받을 수 있어 다양한 상황에서 활용할 수 있습니다. 참고로, 두 집합이 서로 같은 경우에도 부분 집합으로 판단하여 true를 반환한다는 점도 기억해 두면 좋습니다.