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

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

C#에서는 IsSupersetOf() 메서드를 사용하여 특정 HashSet이 지정된 컬렉션의 상위 집합(superset)인지 여부를 간단하게 확인할 수 있습니다. 이 메서드는 해당 HashSet이 전달된 컬렉션의 모든 요소를 포함하고 있으면 true를, 하나라도 빠져 있다면 false를 반환합니다.

예제 1

다음은 두 개의 HashSet을 만들고, set1이 set2의 상위 집합인지 확인하는 예제입니다.

using System;
using System.Collections.Generic;
public class Demo {
   public static void Main(){
      HashSet<string> set1 = new HashSet<string>();
      set1.Add("AB");
      set1.Add("CD");
      set1.Add("EF");
      set1.Add("AB");
      set1.Add("IJ");
      set1.Add("KL");
      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("KL");
      Console.WriteLine("HashSet2의 요소");
      foreach(string val in set2){
         Console.WriteLine(val);
      }
      Console.WriteLine("set1은 set2의 상위 집합인가? " + set1.IsSupersetOf(set2));
   }
}

출력 결과

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

HashSet1의 요소
AB
CD
EF
IJ
KL
OP
HashSet2의 요소
EF
KL
set1은 set2의 상위 집합인가? True

첫 번째 예제에서는 set1에 set2의 모든 요소(EF, KL)가 포함되어 있으므로 true가 반환됩니다. 참고로 HashSet은 중복된 값을 허용하지 않기 때문에 "AB"와 "EF"를 여러 번 추가해도 한 번만 저장됩니다.

예제 2

이번에는 상위 집합이 아닌 경우를 살펴보겠습니다. set2에 set1에 존재하지 않는 요소(MN, QR)가 포함되어 있으므로 결과는 false가 됩니다.

using System;
using System.Collections.Generic;
public class Demo {
   public static void Main(){
      HashSet<string> set1 = new HashSet<string>();
      set1.Add("IJ");
      set1.Add("KL");
      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.IsSupersetOf(set2));
   }
}

출력 결과

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

HashSet1의 요소
IJ
KL
EF
OP
HashSet2의 요소
KL
MN
OP
QR
set1은 set2의 상위 집합인가? False

정리

IsSupersetOf() 메서드는 집합 간 포함 관계를 검증할 때 매우 유용합니다. 상위 집합 여부뿐만 아니라 IsSubsetOf()(부분 집합 여부), IsProperSupersetOf()(진부분 상위 집합 여부) 등의 관련 메서드들도 함께 활용하면 다양한 집합 연산을 손쉽게 처리할 수 있습니다.