2012-05-01 2 views
1

여러 번 읽었습니다. 명확하게 설명하고 싶습니다.HashMap 구현 개념

HashMap은 Arraylists의 배열이라고합니다.

우리는 그 배열의 크기는 해시 맵

참고 버킷의 크기 말할 수 : 그냥 하나의 보정을 만들고 싶어 :

1) 버킷의 번호 배열 크기 2) 버킷에 해당 크기는 Arraylist의 크기입니다.

불편을 끼쳐 드려 죄송합니다. 위의 두 가지 사항이 올바른지 알려주십시오.

답변

4

아니요. 각 버킷은 ArrayList이므로 버킷 크기는 ArrayList 크기가됩니다. 좋은 구현은 모든 것을 대략 같은 크기로, 그리고 아주 작게 유지하려고 노력할 것입니다.

+1

HashMap 버킷은 ArrayList보다 LinkedList와 비슷하지만 ... –

0

버킷의 수는 어레이의 길이입니다. 각 버킷은 ArrayList이므로 버킷 크기 (버킷마다 다를 수 있음)는 해당 ArrayList의 길이가됩니다. 이 사이즈가 복수가되는 유일한 이유는, HashMap에 추가 된 2 개의 오브젝트에 대해 계산 된 해시 코드가 충돌했을 경우입니다 (nb는 hashCode()에 의해 리턴 된 값과 같지 않을 가능성이 있습니다 만, of /지도의 버킷 수).

0

사실 더 복잡합니다. 예를 들어, Java HashMap은 연결된 목록의 배열로 구현됩니다. 그리고 그 모델에는 고정 된 버킷 크기가 전혀 없습니다.

문서를 읽으면 다양한 특성으로 해시 테이블을 구성하는 다양한 방법이 있다는 것을 알 수 있습니다. Wikipedia page on hash tables은 읽기 시작하기 좋은 장소입니다.