언어/C#

SortedDictionary<TKey, TValue>

에린_1 2024. 8. 7. 09:39
728x90

SortedDictionary<TKey, TValue>

  • .NET에서 제공하는 제네릭 컬렉션 클래스 중 하나로, 키와 값의 쌍을 저장하고 키를 기준으로 자동으로 정렬하는 사전(Dictionary)이다.
  • 이 클래스는 System.Collections.Generic 네임스페이스에 포함되어 있으며, 키가 정렬 순서로 저장되어야 하는 시나리오에서 유용하다.

주요 특징

  1. 키의 정렬
    • 키를 기준으로 자동으로 정렬한다. 기본적으로 키는 기본 제공된 비교자(기본적으로 IComparable<TKey> 구현 또는 지정된 IComparer<TKey>)를 사용하여 정렬된다.
  2. 키와 값의 쌍
    • 다른 사전 컬렉션과 마찬가지로 키와 값의 쌍을 저장한다. 각 키는 고유하며, 동일한 키를 두 번 저장할 수 없다.
  3. 빠른 검색
    • 키에 대한 검색, 추가, 삭제가 모두 로그(log) 시간 내에 수행된다. 이는 내부적으로 이진 탐색 트리 구조를 사용하기 때문이다.
  4. 정렬된 열거
    • 컬렉션을 열거할 때 키의 정렬된 순서대로 열거하게 된다.

주요 메서드 및 속성

  • Add(TKey key, TValue value)
    • 지정한 키와 값 쌍을 사전에 추가한다.
  • Remove(TKey key)
    • 지정한 키를 가진 항목을 제거한다.
  • TryGetValue(TKey key, out TValue value)
    • 지정한 키가 있는 경우 값을 가져온다.
  • ContainsKey(TKey key)
    • 지정한 키가 있는지 확인한다.
  • ContainsValue(TValue value)
    • 지정한 값이 있는지 확인한다.
  • Clear()
    • 모든 항목을 제거한다.
  • Count
    • 사전에 있는 키-값 쌍의 수를 가져온다
  • Keys
    • 정렬된 키의 컬렉션을 가져온다.
  • Values
    • 정렬된 값의 컬렉션을 가져온다.

사용 시 고려 사항

  • 성능
    • SortedDictionary는 검색, 추가 및 삭제 작업에 대해 O(log n)의 시간 복잡도를 갖는다.
    • 이는 키의 순서가 중요하고, 삽입/삭제가 빈번하지 않은 경우에 적합하다.
  • 메모리 사용량
    • 내부적으로 이전 탐색 트리를 사용하기 때문에 일반적인 Dictionary<TKey, TValue> 보다 약간 더 많은 메모리를 사용할 수 있다
  • 정렬 기준
    • 기본적으로 키의 기본 비교자(키가 IComparable를 구현하는 경우)를 사용하여 정렬된다.
    • 사용 지정 비교자를 사용하려면 SortedDictionary 생성자에 IComparaer<TKey>를 제공할 수 있다.
728x90