HashMap의에 대한 질문

1.HashMap 배열의 길이는 (2)의 이유는 전원인가?

A :, 작업 효율 보낸 %는 M이 2의 거듭 제곱 인 경우,이 기능은 해시 것, 비교적 낮은 (키) % 위치 배열 첨자 %의 해시 값, 즉 해시 (키) %의 M, 배열 길이에 사용 M = 해시 (키)를 (M-1), 더 효율적인 계산을 갖는 비트가 HashMap의 해시 (열쇠)를 사용하는 것이다 (M-1) 대상 배열을 찾는 단계;

 해시 값이 너무 정의 된 이유 해시 방법을 2.HashMap?

jdk8으로는 다음과 같습니다 :

(키 ==의  )? 0 (H = key.hashCode ()) ^ (H >>> 16)

시간 및 16 시간 부호 오른쪽 시프트 연산, 또는 결과 여부;

key.hashCode ()의 직접 사용 후 대상 프로세스가 높은 정보와 위치 배열을하지 낮출 수도 있고, 여기에 사용 된 작업이 해시 충돌을 줄이기 위해 높은 정보 낮은 혼합 여부를 경우, 이유 & 또는 함께 여부 | 그것은? & 0 (0 0 =쪽으로 결과를 만들 것 0 , 0 1 = 0 , 1 0 = 0 | 0 = 0, 0 | 1 (0에 가까운됩니다 |, 1 = 1 1) = 1 1 , 1 | 0 = 1 , 1 | 1 = 1 ), 최종 결과가 충분히 균형을하지 않습니다.

 

추천

출처www.cnblogs.com/mylittlecabin/p/11275655.html