Mutable HashMap key는 hash가 바뀌면 원래 bucket에서 찾을 수 없다

put 뒤 equals/hashCode에 쓰는 field를 변경하면 lookup은 새 hash bucket을 검색하지만 entry는 옛 bucket에 남습니다.

  1. 1

    put key

    hash=17 bucket A

  2. 2

    mutate key field

    identity same

  3. 3

    new hash

    hash=42 bucket B

  4. 4

    map.get(key)

    bucket B 탐색

  5. 5

    orphan entry

    bucket A에 남음

핵심: key는 불변 값으로 만들거나 변경 전 remove 후 새 key를 put합니다.