Section 27.1: HashSet<T>
HashSet
은 각각의 유일한 요소들만이 저장되어 있는 컬렉션으로, 요소 검색시 O(1) 시간 복잡도를 갖는다.
HashSet<int> validStoryPointValues = new HashSet<int>() { 1, 2, 3, 5, 8, 13, 21 };
bool containsEight = validStoryPointValues.Contains(8); // O(1)
비교를 위해 List
의 Contains
를 수행하는 경우를 생각해 보면, 이는 훨씬 뒤떨어지는 성능을 보여준다:
List<int> validStoryPointValues = new List<int>() { 1, 2, 3, 5, 8, 13, 21 };
bool containsEight = validStoryPointValues.Contains(8); // O(n)
HashSet.Contains
는 해시테이블을 사용하므로, 해당 컬렉션이 가지고 있는 요소들의 수에 관계 없이 언제나 매우 빠른 검색 속도를 보여 준다.
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
27.3: SortedSet<T> (0) | 2021.08.17 |
---|---|
27.2: Dictionary<TKey, TValue> (0) | 2021.08.12 |
26.5: 컬렉션 초기자 (Collection Initializer) 에서 배열을 인자로 받기 (0) | 2021.08.11 |
26.4: 객체 초기자 (Object initializer) 내에서 컬렉션 초기자 (Collection initializer) 사용하기 (0) | 2021.08.11 |
26.3: 사용자 정의 class 를 컬렉션 초기자 (Collection initializer) 로 초기화하기 (0) | 2021.07.08 |