Sorted 컬렉션 형식
System.Collections.SortedList 클래스, System.Collections.Generic.SortedList<TKey,TValue> 제네릭 클래스 및 System.Collections.Generic.SortedDictionary<TKey,TValue> 제네릭 클래스는 Hashtable 클래스 및 Dictionary<TKey,TValue> 제네릭 클래스와 유사합니다. 해당 항목은 여기서 IDictionary 인터페이스를 구현하지만 키를 기준으로 한 정렬 순서로 해당 요소를 유지 관리하고 O(1) 삽입 및 해시 테이블의 검색 특성을 갖지 않습니다. 세 가지 클래스에는 공통적으로 다음과 같은 몇 가지 기능이 있습니다.
세 가지 클래스는 모두 System.Collections.IDictionary 인터페이스를 구현합니다. 두 개의 제네릭 인터페이스는 System.Collections.Generic.IDictionary<TKey,TValue> 제네릭 클래스도 구현합니다.
각 요소는 열거형에 사용할 키/값 쌍입니다.
참고 항목
제네릭 클래스가 아닌 SortedList 클래스는 열거될 때 DictionaryEntry 개체를 반환하지만 두 개의 제네릭 형식은 KeyValuePair<TKey,TValue> 개체를 반환합니다.
요소는 System.Collections.IComparer 구현(제네릭 클래스가 아닌 SortedList의 경우) 또는 System.Collections.Generic.IComparer<T> 구현(두 개의 제네릭 클래스의 경우)에 따라 정렬됩니다.
각 클래스는 키만 포함하거나 값만 포함하는 컬렉션을 반환하는 속성을 제공합니다.
다음 표에서는 두 개의 정렬된 목록 클래스 및 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> 인터페이스를 구현합니다.
참고 항목
.NET