Dictionary
Dictionary의 종류
Dictionary
- Key와 Value의 Pair를 갖는 자료구조
- Generic 해시테이블 구조를 사용
SortedDictionary
- 이진검색트리를 이용
- 기본적으로 key 값을 기준으로 정렬
Hashtable
- Non Generic의 해시테이블
- 동일 Key에 대한 여러 Value 허용
기타 종류
- ListDictionary
- OrderedDictionary
- ConcurrentDictionary
- …
해시테이블(Hashtable) vs. 딕셔너리(Dictionary)
Hashtable | Dictionary |
---|---|
* Non-generic * Key/Value로 Object 받음 * Boxing/Unboxing을 사용 * Value에 일정한 형식이 없고 여러 형태를 저장하는 경우 * Thread Safety |
* Generic (특정 key 값과 특정 value 요구) * Key/Value로 Strong Type 받음 * Boxing/Unboxing 없음 * 고정적으로 하나의 타입만 입력받는 경우 사용 * No Thread Safety |
- 둘 다 중복된 Key를 받지 않고, 중복 Key를 받는 경우에는 에러 발생
Strong Type & Weak Type
// C# in strongly type mode:
int i = 0;
// C# in weakly type mode:
object i = 0;
- 프로그래밍 언어가 분류되는 중요한 기준 중 하나인 타입 시스템 (정확한 기준은 없음)
Type | 내용 |
---|---|
Strong Type Language | * 정확한 규칙에 따라 대부분의 error와 exception을 compile time에 처리 * 변수 할당 * 함수 Return values * 프로시져의 매개 변수와 함수 호출 |
Dynamically Typed Language | * type checking이 run-time에 일어남 * Strong typed가 될 수 있다 * 값은 type이 정해져 있지만, 변수는 type이 없음 |
Weakly Typed Language | * 더 느슨한 규칙 * 전혀 예상치 못한 error나 undefined behavior, errorable result를 야기 |