2024. 9. 1. 16:43ㆍc#
C#에서의 Dictionary와 HashSet
C#에는 데이터를 효율적으로 저장하고 관리하기 위한 다양한 컬렉션 타입이 있습니다.
그중에서도 Dictionary와 HashSet은 키-값 쌍으로 데이터를 저장하거나 고유한 값을 관리할 때 자주 사용됩니다.
이 포스팅에서는 Dictionary와 HashSet의 개념, 사용 방법, 그리고 이들의 차이점을 알아보겠습니다.
1. Dictionary란?
Dictionary 개요
Dictionary<TKey, TValue>는 키와 값의 쌍을 저장하는 제네릭 컬렉션입니다.
여기서 TKey는 키의 타입, TValue는 값의 타입을 나타냅니다.
Dictionary는 각 키가 고유해야 하며, 이를 통해 빠르게 값을 검색, 추가, 삭제할 수 있습니다.
Dictionary 사용 예제
Dictionary를 사용하여 이름과 나이를 저장하고 관리하는 예제를 살펴보겠습니다.
// Dictionary<string, int> 선언 및 초기화
Dictionary<string, int> ages = new Dictionary<string, int>();
// 요소 추가
ages.Add("Alice", 25);
ages.Add("Bob", 30);
// 요소 접근
int aliceAge = ages["Alice"];
Console.WriteLine($"Alice의 나이: {aliceAge}");
// 요소 삭제
ages.Remove("Bob");
// 전체 요소 출력
foreach (KeyValuePair<string, int> entry in ages)
{
Console.WriteLine($"{entry.Key}: {entry.Value}");
}
Dictionary의 주요 특징
- 키-값 쌍 저장: 키와 값의 쌍으로 데이터를 저장하며, 키를 사용하여 값을 빠르게 검색할 수 있습니다.
- 키의 고유성: Dictionary의 모든 키는 고유해야 하며, 동일한 키를 중복하여 사용할 수 없습니다.
- 빠른 검색: 해시 테이블을 기반으로 하여 키를 통해 빠르게 값을 검색할 수 있습니다.
2. HashSet이란?
HashSet 개요
HashSet<T>는 고유한 값만을 저장하는 제네릭 컬렉션입니다.
중복된 요소를 허용하지 않으며, 집합(Set) 연산(합집합, 교집합, 차집합)을 효율적으로 수행할 수 있습니다.
HashSet은 순서가 중요하지 않은 데이터의 집합을 관리할 때 유용합니다.
HashSet 사용 예제
HashSet을 사용하여 고유한 숫자 집합을 관리하는 예제를 살펴보겠습니다.
// HashSet<int> 선언 및 초기화
HashSet<int> numbers = new HashSet<int> { 1, 2, 3, 4, 5 };
// 요소 추가
numbers.Add(6);
numbers.Add(3); // 중복된 요소 추가 시 무시됨
// 요소 포함 여부 확인
bool containsThree = numbers.Contains(3);
Console.WriteLine($"3을 포함하고 있습니까? {containsThree}");
// 요소 삭제
numbers.Remove(4);
// 전체 요소 출력
foreach (int number in numbers)
{
Console.WriteLine(number);
}
HashSet의 주요 특징
- 고유한 값 저장: HashSet은 중복된 값을 허용하지 않으며, 각 값은 고유합니다.
- 빠른 검색 및 연산: 해시 테이블을 기반으로 하여 값의 존재 여부를 빠르게 확인할 수 있습니다.
- 집합 연산 지원: 합집합, 교집합, 차집합 등의 집합 연산을 효율적으로 처리할 수 있습니다.
3. Dictionary와 HashSet의 차이점
데이터 구조
- Dictionary: 키-값 쌍으로 데이터를 저장하며, 키를 통해 값에 접근합니다.
각 키는 고유해야 하며, 값은 중복될 수 있습니다. - HashSet: 고유한 값을 저장하는 컬렉션으로, 중복된 값을 허용하지 않습니다.
순서가 중요한 경우에는 적합하지 않습니다.
사용 목적
- Dictionary: 특정 키에 대한 값을 빠르게 검색하거나 저장할 때 사용됩니다.
예를 들어, 사용자 이름을 키로 하고, 해당 사용자의 정보를 값으로 저장할 때 유용합니다. - HashSet: 중복을 허용하지 않는 고유한 값들의 집합을 관리하거나, 집합 연산이 필요한 경우 사용됩니다.
예를 들어, 참가자의 고유한 ID를 저장할 때 유용합니다.
성능
- Dictionary: 키를 통해 빠르게 값을 검색할 수 있는 고성능 컬렉션입니다.
- HashSet: 요소의 중복을 방지하고, 고유한 요소를 관리하는 데 특화된 성능을 제공합니다.
C#에서 Dictionary와 HashSet은 각각 고유한 목적을 가진 강력한 컬렉션입니다.
Dictionary는 키-값 쌍을 관리하고 빠르게 데이터를 검색할 때 유용하며,
HashSet은 중복되지 않는 고유한 값을 관리하고 집합 연산을 효율적으로 처리할 수 있습니다.
이 포스팅에서는 Dictionary와 HashSet의 개념과 사용 방법을 살펴보았습니다.
이들을 적절히 활용하면, 데이터 관리와 검색을 효율적으로 수행할 수 있을 것입니다.
'c#' 카테고리의 다른 글
c# 클래스와 객체의 개념 (0) | 2024.09.10 |
---|---|
C# 배열(Array)과 컬렉션(Collection)의 차이점 (4) | 2024.09.01 |
c# List와 ArrayList (0) | 2024.09.01 |
C# 배열(Array)과 컬렉션(Collection) (0) | 2024.09.01 |
c# 오버로딩과 오버라이딩 (0) | 2024.08.31 |