2015-01-27 3 views
1

HashMap의로드 요소가 버킷을 다른 위치로 복원하고 0.75로 유지하는 것이 더 좋으므로 크기가 0.75 * 현재 용량에 도달하면 버킷 배열이 현재 용량의 두 배로 재 할당됩니다.자바로드 팩터 트레이드 오프

예를 들어 용량은 16입니다. 16 * 0.75 = 12가되면 배열이 다시 할당됩니다. 메모리가 비효율적이기 때문에이 시점에서 배열이 16에 도달하기 전에도 16 개의 요소가 추가로 생성됩니다.

시간이 효율적이라면 부하율을 사용하는 방법은 무엇입니까?

+0

에 오신 것을 환영합니다. 직접 작성하기 전에 관련 질문을 검색하십시오! 이 질문은 유용한 정보입니다. http://stackoverflow.com/questions/10901752/what-is-the-significance-of-load-factor-in-hashmap – HavelTheGreat

+1

이 질문은 기능 프로그래밍과 관련이없는 것 같습니다. –

+0

"메모리가 비효율적이라는 의미입니다." -> 그래서 당신은 새로운 메모리를 할당하기 전에 해시 테이블이 완전히 채워질 때까지 기다려야한다는 것을 의미합니까? 메모리 효율 (귀하의 관점에서) - 이것이 유일한 요소는 아닙니다. 로드 인자 0.75를 권장하는 이유를 읽어보십시오. –

답변

1

충돌 속도가 낮은 경우 HashMap이 가장 잘 수행됩니다. 용량이 클수록 충돌 가능성이 적습니다. 즉 동일한 버킷에있는 두 개의 키입니다.

높은 충돌 속도를 피하기 위해 기본 요소의 75 %가 채워지지 않도록로드 요소가 사용됩니다.

BTW 배열에서 사용하는 추가 메모리가 다른 오버 헤드와 비교하여 작습니다.

+1

* 나중에 * 용량? – gknicker

+0

@gknicker 감사합니다. ;) –

관련 문제