딕셔너리를 사용할 때 키가 딕셔너리에 저장돼 있는지 여부가 중요하고 그 값은 중요하지 않을 때가 있다.
예를 들어 중복되지 않는 단어 목록을 작성하고 싶을 때 단어를 '키'로 저장하고, '값'에는 저장하고 싶은 정보가 없어 따로 필요하지 않다.
이 경우에 List<string>에 저장하는 방법도 있지만 새로운 단어를 저장할 때 리스트에 중복되는 단어가 있는지 리스트 전체 내용을 읽고 판단한 후 저장해야 하기에 이 방법은 효율적이지 않다.
이럴 때 딕셔너리와 비슷한 HashSet<T> 클래스를 사용하면 된다.
HashSet<T> 클래스는 Dictionary<TKey, TValue>와 비슷하지만 키 부분만 저장하고 값은 저장하지 않는다는 점이 다르다.
중복을 허용하지 않는 요소의 집합을 나타내는 클래스이다.
var wordsList = new HashSet<string>();
wordsList.Add("apple");
bool result = wordsList.Add("apple"); //중복되는 값을 저장해도 예외가 발생하지 않고 false를 반환.
HashSet<T>에 있는 Add 메서드는 요소가 HashSet<T> 객체에 추가되면 true를 반환하고 요소가 이미 존재하는 경우에는 예외를 발생시키지 않고 false를 반환한다.
따라서 요소가 이미 존재하는지에 대해 신경 쓰지 않고 요소를 추가할 수 있다.
'C# > 기본적인 팁' 카테고리의 다른 글
C#에서 날짜와 시간 처리 (DateTime 객체) (0) | 2021.08.24 |
---|---|
배열과 List<T>의 다양한 처리 (조건을 만족하는 요소 구하기, 중복 제거, 순서대로 나열, 컬렉션 연결) (0) | 2021.08.16 |
기본적인 관용구 (0) | 2021.08.04 |
구체적인 클래스가 아니고 인터페이스에 대해 프로그래밍하자. (0) | 2021.05.18 |
형식적으로 인스턴스를 생성하는 것은 낭비이다. (0) | 2021.05.18 |