2009-09-04 2 views
56

question의 복제본 인 것 같습니다. "SortedListSortedDictionary의 차이점은 무엇입니까?" 불행히도, 답변은 MSDN 문서 (성능과 메모리 사용 차이점이 있음을 명확하게 명시 함)를 인용하는 것 이상을 수행하지만 실제로는 대답하지 않습니다.SortedDictionary <TKey, TValue>를 통해 SortedList <TKey, TValue>를 사용하는 경우?

사실 MSDN에 따르면, (그래서이 질문에 같은 대답을하지 않음) :

SortedList<TKey, TValue> 일반적인 클래스는 여기서 검색 (로그 n) O와 이진 검색 트리입니다 n은 사전에있는 요소 수인 입니다. SortedDictionary<TKey, TValue> generic 클래스와 비슷합니다. 두 클래스는 유사한 개체 모델을 가지고 있으며 모두 O (log n) 검색을가집니다. 2 개 개의 메모리 사용되고 다를 클래스 및 속도 삽입 및 제거 여기서

  • SortedList<TKey, TValue>SortedDictionary<TKey, TValue> 보다 적은 메모리를 사용한다.

  • SortedDictionary<TKey, TValue> 가 빠른 삽입 및 제거 정렬되지 않은 데이터에 대한 연산 있으며, O (로그 n) SortedList<TKey, TValue> 위해 (N) O 반대로.

  • 목록이 정렬 된 데이터에서 모두 한 번에 채워 경우, SortedList<TKey, TValue>보다 빠른 SortedDictionary<TKey, TValue>입니다.

그래서, 분명이 SortedList<TKey, TValue> 당신이 필요로 빠르게 삽입하고 분류되지 않은 데이터에 대한 작업을 제거하지 않는 한 더 나은 선택 것을 표시한다.

SortedDictionary<TKey, TValue>을 사용하는 실제 (실제 사례, 비즈니스 사례 등) 이유에 대한 정보가 있으면 질문이 아직 남습니다. 성능 정보에 따르면 실제로는 SortedDictionary<TKey, TValue>을 가질 필요가 없음을 의미합니다.

+1

여기서 인용 한 섹션에 모두 나와 있습니다. 그러나 '정렬되지 않은 데이터에 대한 빠른 삽입 및 제거'에 대한 진술은 정확하지 않습니다. 실제로 말하는 것은 '삽입 및 제거'작업이 항상 SortedList에서 시간 복잡성이 더 높다는 것입니다. '정렬되지 않은 데이터'에 대한 설명은 생성자를 통해 데이터로 이러한 구조를 초기화하는 것과 관련이 있습니다. – jerryjvl

+0

이것은 .NET 2.0과 관련이있는 것으로 보입니다. SortedList 의 구현이 3.0 이후로 변경된 것 같습니다. 나는 최근에이 질문에 대한 답변을 직접 필요로했으며이 질문과 응답이 더 이상 .NET 4.5 사용자와 관련이 없음을 발견했습니다. – Jeremy

답변