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

C#에서 두 개의 HashSet 합집합 구하는 방법

C#에서 두 개의 HashSet의 합집합(Union)을 구하려면 UnionWith() 메서드를 사용하면 됩니다. 이 메서드는 현재 HashSet에 다른 컬렉션의 모든 요소를 병합하며, 중복된 요소는 자동으로 제거되므로 집합 연산을 매우 간편하게 수행할 수 있습니다.

예제 1: 동일한 요소를 가진 두 HashSet의 합집합

아래 예제에서는 두 개의 HashSet을 생성하고 UnionWith() 메서드로 합집합을 구하는 과정을 보여줍니다.

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      HashSet<int> set1 = new HashSet<int>();
      set1.Add(100);
      set1.Add(200);
      set1.Add(300);
      set1.Add(400);
      set1.Add(500);
      set1.Add(600);

      Console.WriteLine("HashSet1 요소...");
      foreach(int ele in set1) {
         Console.WriteLine(ele);
      }

      HashSet<int> set2 = new HashSet<int>();
      set2.Add(100);
      set2.Add(200);
      set2.Add(300);
      set2.Add(400);
      set2.Add(500);
      set2.Add(600);

      Console.WriteLine("HashSet2 요소...");
      foreach(int ele in set2) {
         Console.WriteLine(ele);
      }

      Console.WriteLine("합집합 결과...");
      set1.UnionWith(set2);

      foreach(int ele in set1) {
         Console.WriteLine(ele);
      }
   }
}

출력 결과

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

HashSet1 요소...
100
200
300
400
500
600
HashSet2 요소...
100
200
300
400
500
600
합집합 결과...
100
200
300
400
500
600

두 HashSet이 완전히 동일한 요소를 가지고 있기 때문에, 합집합 결과 역시 중복 없이 동일한 요소들만 출력됩니다.

예제 2: 일부 요소만 겹치는 두 HashSet의 합집합

이번에는 두 HashSet이 일부 요소만 공유하는 경우의 합집합을 살펴보겠습니다.

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      HashSet<int> set1 = new HashSet<int>();
      set1.Add(100);
      set1.Add(200);
      set1.Add(300);
      set1.Add(400);
      set1.Add(500);
      set1.Add(600);

      Console.WriteLine("HashSet1 요소...");
      foreach(int ele in set1) {
         Console.WriteLine(ele);
      }

      HashSet<int> set2 = new HashSet<int>();
      set2.Add(100);
      set2.Add(250);
      set2.Add(300);

      Console.WriteLine("HashSet2 요소...");
      foreach(int ele in set2) {
         Console.WriteLine(ele);
      }

      Console.WriteLine("합집합 결과...");
      set1.UnionWith(set2);

      foreach(int ele in set1) {
         Console.WriteLine(ele);
      }
   }
}

출력 결과

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

HashSet1 요소...
100
200
300
400
500
600
HashSet2 요소...
100
250
300
합집합 결과...
100
200
300
400
500
600
250

정리

UnionWith() 메서드는 호출한 HashSet(set1) 자체를 수정하며, 인자로 전달된 컬렉션(set2)의 고유한 요소들을 현재 집합에 추가합니다. 위 예제에서 확인할 수 있듯이, set2에만 존재하는 값인 250이 최종 합집합 결과에 포함되었고, 이미 set1에 존재하던 100과 300은 중복 없이 그대로 유지되었습니다.