C#의 HashSet<T>에서 특정 요소를 제거하려면 Remove() 메서드를 사용합니다. 이 메서드는 컬렉션 내에 해당 요소가 존재하면 삭제하고 true를 반환하며, 존재하지 않으면 false를 반환합니다.
Remove() 메서드란?
HashSet<T>.Remove(T item)은 해시 집합에서 지정한 요소를 제거하는 메서드입니다. HashSet은 중복을 허용하지 않는 자료구조이므로, 이미 존재하는 요소를 다시 추가해도 한 번만 저장됩니다.
예제 1: 문자열 HashSet에서 요소 제거
다음 예제는 문자열 타입의 HashSet 두 개를 만들고, Remove() 메서드로 요소를 제거한 후 결과를 확인하는 코드입니다.
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("HashSet2의 요소 개수 = " + set2.Count);
// "KL" 요소 제거
set2.Remove("KL");
Console.WriteLine("\nHashSet2의 요소... (업데이트 후)");
foreach (string res in set2){
Console.WriteLine(res);
}
Console.WriteLine("HashSet2의 요소 개수 (업데이트 후) = " + set2.Count);
Console.WriteLine("\nset1이 set2의 상위 집합인가? " + set1.IsSupersetOf(set2));
}
}실행 결과
HashSet1의 요소 AB CD EF IJ KL OP HashSet2의 요소 EF KL HashSet2의 요소 개수 = 2 HashSet2의 요소... (업데이트 후) EF HashSet2의 요소 개수 (업데이트 후) = 1 set1이 set2의 상위 집합인가? True
코드 설명
- HashSet은 중복 값을 허용하지 않기 때문에 "AB"와 "EF"를 여러 번 추가해도 각각 한 번만 저장됩니다.
set2.Remove("KL")호출로 "KL" 요소가 제거되고, 요소 개수가 2에서 1로 줄어듭니다.IsSupersetOf()메서드는 set1이 set2의 모든 요소를 포함하는지 확인하여true를 반환합니다.
예제 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("HashSet의 요소");
foreach(int val in set1){
Console.WriteLine(val);
}
Console.WriteLine("HashSet의 요소 개수 = " + set1.Count);
// 300 요소 제거
set1.Remove(300);
Console.WriteLine("\nHashSet의 요소... (업데이트 후)");
foreach (int res in set1){
Console.WriteLine(res);
}
Console.WriteLine("HashSet의 요소 개수 (업데이트 후) = " + set1.Count);
}
}실행 결과
HashSet의 요소 100 200 300 400 500 600 HashSet의 요소 개수 = 6 HashSet의 요소... (업데이트 후) 100 200 400 500 600 HashSet의 요소 개수 (업데이트 후) = 5
정리
- Remove(T item): HashSet에서 지정한 요소를 제거합니다. 성공 시
true, 실패 시false를 반환합니다. - Count 속성: 제거 후 요소 개수가 자동으로 감소합니다.
- 중복 처리: HashSet은 중복 요소를 저장하지 않으므로 Add()를 반복 호출해도 고유한 값만 유지됩니다.
- 참고로, 존재하지 않는 요소를 Remove()로 제거하려 하면 예외가 발생하지 않고 단순히
false를 반환하므로 안전하게 사용할 수 있습니다.