2016-12-16 1 views
0

해시 맵의 작동 방식과 충돌 해결 방법을 알고 있습니다. 동일하지 않은 오브젝트는 HashMap의 해시 코드 충돌의 정확한 원인

  • 기본이되는 배열의 크기가 같은 해시 코드를 가질 수 - - 크기가 고정 따라서 위치가 재사용 될 수 버킷됩니다 (사용을

    • 해시 계약 : 그러나 SO에 충돌에 관한 많은 답변은 두 가지 이유를 가리 모듈로 연산자). 이성의 확신으로

    내 가정은, 위의 이유로 2도 올 1

    만 1 질문 :

    • 자바 독은 해시 맵이 결정 LF 및 용량을 사용 말한다 다시 할 때. 이 부분적으로 기본 배열의 크기를 조정하는 것으로 이해합니다. 그렇다면 이성 2는 어떻게 가능합니까?

    NB :This question 내가 이해하고 싶은 가장 가까운왔다. 그러나 받아 들여진 대답은 이유 2를 모두 버리는 것으로 보이므로 여전히 궁금합니다.

  • +0

    용량에 따라 해시 맵 크기가 조정됩니다 (LF * 용량 <크기) 또는 충돌이 감지 된 경우. –

    +2

    @LaurentB 그건 사실이 아니야. 충돌이 감지되면 크기 조정이 발생하지 않습니다. – Kayaman

    +0

    @ 카야 만 죄송합니다. 버킷이 가득 차고 용량이 –

    답변

    2

    이유 2에 결함이 있습니다. 동일한 버킷 (hashcode % buckets.length)에 끝나는 두 개의 (동일하지 않은) 객체를 추가하는 경우 빈 버킷이 많아도 버킷을 다시 사용할 수 있습니다. 양동이가 채워지는 것은 분명히 비어 있지 않은 양동이로 끝날 확률이 높다는 것을 제외하고는 "가득 차있는"요소가 없습니다.