더북(TheBook)

딕셔너리는 훨씬 더 작은 배열을 할당하고 해시 값의 고른 분포에 의존한다. 해시 값 자체를 조회하는 대신 ‘해시 값을 배열 길이로 나눈 나머지’를 조회한다. 정수 키가 있는 딕셔너리가 항목 6개인 배열을 할당하여 인덱스를 보관하고, 정수에 대한 GetHashCode() 메서드가 해당 값을 반환한다고 가정해 보자. 즉, 배열 인덱스가 0에서 시작하므로 항목이 매핑될 위치를 찾는 공식은 단순히 value % 6이 된다. 1부터 6까지 숫자 배열을 그림 2-7과 같이 분산 배치한다.

▲ 그림 2-7 딕셔너리의 항목 분포

딕셔너리 용량을 초과하면 무슨 일이 일어날까? 물론 중복되는 항목이 있을 수 있으므로 딕셔너리는 중복되는 항목을 동적으로 증가하는 배열에 보관한다. 1부터 7까지 키가 있는 항목을 저장하면 그림 2-8과 같은 배열이 된다.

▲ 그림 2-8 딕셔너리의 중복 항목 보관

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.