Sorted 컬렉션 형식
System.Collections.SortedList 클래스, System.Collections.Generic.SortedList<TKey, TValue> 제네릭 클래스 및 System.Collections.Generic.SortedDictionary<TKey, TValue> 제네릭 클래스는 IDictionary 인터페이스를 구현한다는 점에서 Hashtable 클래스 및 Dictionary<TKey, TValue> 제네릭 클래스와 유사하지만 요소를 키별 정렬 순서로 유지하며 해시 테이블의 O(1) 삽입 및 검색 특징이 없다는 점에서 다릅니다. 이 세 클래스에는 다음과 같이 공통적인 기능이 많이 있습니다.
세 클래스 모두 System.Collections.IDictionary 인터페이스를 구현합니다. 두 제네릭 클래스는 System.Collections.Generic.IDictionary<TKey, TValue> 제네릭 인터페이스도 구현합니다.
각 요소는 열거형 용도를 위한 키/값 쌍입니다.
참고
제네릭이 아닌 SortedList 클래스는 열거될 때 DictionaryEntry 개체를 반환하지만 두 제네릭 형식은 KeyValuePair<TKey, TValue> 개체를 반환합니다.
요소는 제네릭이 아닌 SortedList의 경우 System.Collections.IComparer 구현에 따라 정렬되며 두 제네릭 클래스의 경우 System.Collections.Generic.IComparer<T> 구현에 따라 정렬됩니다.
각 클래스는 키만 또는 값만 포함하는 컬렉션을 반환하는 속성을 제공합니다.
다음 표에서는 정렬된 두 목록 클래스와 SortedDictionary<TKey, TValue> 클래스 간의 몇 가지 차이점을 보여 줍니다.
제네릭이 아닌 SortedList 클래스 및 SortedList<TKey, TValue> 제네릭 클래스 |
SortedDictionary<TKey, TValue> 제네릭 클래스 |
---|---|
키와 값을 반환하는 속성은 효율적인 인덱싱된 검색을 위해 인덱싱됩니다. |
인덱싱된 검색을 수행하지 않습니다. |
검색이 O(log n)입니다. |
검색이 O(log n)입니다. |
삽입 및 제거는 일반적으로 O(n)이지만 삽입은 이미 정렬 순서로 되어 있는 데이터의 경우 O(1)이므로 각 요소가 목록 끝에 추가됩니다. 이 경우 크기 조정이 필요하지 않다고 가정합니다. |
삽입 및 제거는 O(log n)입니다. |
SortedDictionary<TKey, TValue>보다 메모리를 적게 사용합니다. |
제네릭이 아닌 SortedList 클래스 및 SortedList<TKey, TValue> 제네릭 클래스보다 메모리를 많이 사용합니다. |
여러 스레드에서 동시에 액세스할 수 있어야 하는 정렬된 목록 또는 사전의 경우 ConcurrentDictionary<TKey, TValue>에서 파생되는 클래스에 정렬 논리를 추가할 수 있습니다.
![]() |
---|
직원 ID 번호를 포함하는 직원 레코드와 같이 고유한 키를 포함하는 값의 경우 KeyedCollection<TKey, TItem> 제네릭 클래스에서 파생하여 목록의 일부 특징과 사전의 일부 특징이 있는 키 컬렉션을 만들 수 있습니다. |
.NET Framework 버전 4부터는 SortedSet<T> 클래스에서 삽입, 삭제 및 검색 후에 데이터를 정렬된 순서로 유지하는 자체 균형 조정 트리를 제공합니다. 이 클래스와 HashSet<T> 클래스는 ISet<T> 인터페이스를 구현합니다.
참고 항목
참조
System.Collections.IDictionary
System.Collections.Generic.IDictionary<TKey, TValue>
ConcurrentDictionary<TKey, TValue>