어떤 자료를 보다가 SortedList 라는 데이터 타입을 보고 기록에 남겨 봅니다.
자세한 정보는 MSDN에서!!
SortedList(Of TKey, TValue) Class - MSDN


SortedList(Of TKey, TValue) 는 key/value pair 을 갖는 제네릭 클래스 배열이다.
제네릭 특성을 갖는것을 보니 .NET Framework 3.5 에 포함된 것 같다.


SortedDictionary(Of TKey, TValue) 와의 관계
유사점은 유사한 객체 모델을 갖으며, O(log n) 의 시간 복잡도를 갖는다.
차이점은 메모리 사용량 과 데이터의 삽입, 삭제 속도의 차이를 갖는다.

SortedList(Of TKey, TValue) 는 SortedDictionary(Of TKey, TValue) 보다 적은 메모리를 사용한다.
SortedDictionary(Of TKey, TValue) 는 정렬되지 않은 데이터에 대하여 빠른 삽입, 삭제 속도를 갖는다.
SortedList(Of TKey, TValue) 데이터가 모두 정렬되어 있을 경우 SortedDictionary(Of TKey, TValue) 보다 빠르다.

SortedList(Of TKey, TValue) 는 Key에 의해 정렬된 Key/Value 쌍의 배열로 구현되어 있다. KeyValuePair(Of TKey, TValue) 객체를 통해 탐색할 수 있다.

이름에는 -List 라고 붙지만 Key/Value 쌍으로 데이터 갖기 때문에 Key 값은 유일한 값이여야 한다. Key 값은 Null 이 될 수 없지만 Value 값는 Null 값을 갖을 수 있다.

SortedList(Of TKey, TValue) 는 정렬 및 비교 연산을 위해 comparer 구현을 요구한다. 기본적인 comparer인 Comparer(Of T).Default 는 키 타입인 TKey 가 System.IComparable(Of T) 를 구현 했는지를 체크한다. 구현 했다면 그것을 사용한다. 만약 TKey 가 IComparable(Of T)를 구현하지 않았다면 Comparer(Of T).Default 는 키 타입 TKey 가 System.IComparable 을 구현 했는지 체크한다. 만약 이 둘 모두 구현하지 않았다면 매개변수를 갖는 생성자를 오버로드 한 뒤, System.Collections.Generic.IComparer(Of T) 를 구현해 준다.

예제를 보니 List 계열의 데이터 관리와 Dictionary 계열의 데이터 관리가 같이 사용된다.

기본적으로!
~List 는 배열로 관리되며 빠른 검색에 유리한 계열이다
~Dictionary 는 Linked List 라고 생각하고 빈번한 데이터의 추가/삭제에 유리한 계열이라 생각하자.


@
Posted by six605
,