다음을 통해 공유


Sorted 컬렉션 형식

System.Collections.SortedList 클래스, System.Collections.Generic.SortedList<TKey,TValue> 제네릭 클래스 및 System.Collections.Generic.SortedDictionary<TKey,TValue> 제네릭 클래스는 Hashtable 클래스 및 Dictionary<TKey,TValue> 제네릭 클래스와 유사합니다. 해당 항목은 여기서 IDictionary 인터페이스를 구현하지만 키를 기준으로 한 정렬 순서로 해당 요소를 유지 관리하고 O(1) 삽입 및 해시 테이블의 검색 특성을 갖지 않습니다. 세 가지 클래스에는 공통적으로 다음과 같은 몇 가지 기능이 있습니다.

다음 표에서는 두 개의 정렬된 목록 클래스 및 SortedDictionary<TKey,TValue> 클래스 간의 차이점을 나열합니다.

SortedList 제네릭이 아닌 클래스 및 SortedList<TKey,TValue> 제네릭 클래스 SortedDictionary<TKey,TValue> 제네릭 클래스
키와 값을 반환하는 속성은 인덱스되어 인덱싱된 효율적인 검색을 허용합니다. 인덱스된 검색이 없습니다.
검색은 O(로그 n)입니다. 검색은 O(로그 n)입니다.
삽입 및 제거는 일반적으로 O(n)이지만 정렬 순서로 나열된 데이터의 경우 삽입은 O(로그 n)이므로 각 요소가 목록 끝에 추가됩니다. (여기서는 크기 조정이 필요하지 않다고 가정합니다.) 삽입과 제거는 O(로그 n)입니다.
SortedDictionary<TKey,TValue>보다 적은 메모리를 사용합니다. SortedList 제네릭이 아닌 클래스와 SortedList<TKey,TValue> 제네릭 클래스보다 더 많은 메모리를 사용합니다.

여러 스레드에서 동시에 액세스할 수 있어야 하는 정렬된 목록 또는 사전의 경우 정렬 논리를 ConcurrentDictionary<TKey,TValue>에서 파생된 클래스에 추가할 수 있습니다. 불변성을 고려할 때 다음에 해당하는 변경할 수 없는 형식은 ImmutableSortedSet<T>ImmutableSortedDictionary<TKey,TValue>와 유사한 정렬 의미 체계를 따릅니다.

참고 항목

고유한 키를 포함하는 값(예: 직원 ID 번호를 포함하는 직원 레코드)의 경우 KeyedCollection<TKey,TItem> 제네릭 클래스에서 파생하여 목록의 일부 특성 및 사전의 일부 특성을 가진 키가 지정된 컬렉션을 만들 수 있습니다.

.NET Framework 4부터 SortedSet<T> 클래스는 삽입, 삭제, 검색 후에 정렬된 순서에 따라 데이터를 유지 관리하는 자체 균형 조정 트리를 제공합니다. 이 클래스와 HashSet<T> 클래스는 ISet<T> 인터페이스를 구현합니다.

참고 항목