본문 바로가기
C#

[C#] OrderedDictionary, ListDictionary, HybridDictionary

by DANEW 2023. 9. 24.

OrderedDictionary 클래스

 

OrderedDictionary 클래스 (System.Collections.Specialized)

키나 인덱스에서 액세스할 수 있는 키/값 쌍의 컬렉션을 나타냅니다.

learn.microsoft.com

- .NET 2.0
- 비제네릭 사전 클래스, 제네릭 버전은 없음
- Hashtable + ArrayList(RemoveAt, 정수 인덱서 등을 지원)
- 요소들의 저장 순서가 추가 순서와 동일함 -> 키 뿐만 아니라 색인으로도 요소에 접근 할 수 있음

반응형


ListDictionary 클래스

 

ListDictionary 클래스 (System.Collections.Specialized)

단일 연결 목록을 사용하여 IDictionary를 구현합니다. 일반적으로 10개 미만의 항목이 포함된 컬렉션에 사용하는 것이 좋습니다.

learn.microsoft.com

- 비제네릭 버전만 존재함
- 단일하게 연결된 목록(단일 연결 목록, Singly Linked List) 자료구조로 저장
- 항목들이 추가된 순서는 유지함
- 목록이 클 경우 엄청나게 느림
- 아주 작은 목록(10개 미만)에서만 효율적임

HybridDictionary 클래스

 

HybridDictionary 클래스 (System.Collections.Specialized)

컬렉션이 작을 때는 ListDictionary를 사용하여 IDictionary를 구현한 다음 컬렉션이 커지면 Hashtable로 전환합니다.

learn.microsoft.com


- 비제네릭 버전만 존재함
- ListDictionary + Hashtable
- 처음에는 ListDictionary로, 자료가 일정 크기가 되면 Hashtable로 전환
- 사전이 작을 때에는 메모리를 적게 먹는 방식으로, 크면 성능이 좋은 방식
- 두 방식에 따르는 전환비용이나 Dictionary의 메모리 사용량이 크게 나쁘지 않아 이걸 쓸 일은 거의 없음

 

 

반응형