찾다

 >  Q&A  >  본문

java - HashMap的key值不允许重复问题

高洛峰高洛峰2768일 전831

모든 응답(2)나는 대답할 것이다

  • 天蓬老师

    天蓬老师2017-04-18 10:45:24

    Map의 원리를 살펴보는 것이 좋습니다
    map이 값을 저장할 때 객체의 주소가 아닌 객체의 해시코드를 사용합니다
    먼저 p1을 키로 넣습니다.
    그리고 p1의 값이 변경되면 p1의 해시코드가 변경되어 다시 저장될 때 map은 다른 키라고 생각하여 저장합니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 10:45:24

    다음은 HashMap.put의 내부 구현입니다

    으아아아

    p1.setAge(5) 이후에는 p1의 hashCode가 변경되고, 위 함수의 hash(key)가 변경됩니다. 비록 키가 동일한 객체이더라도 HashMap은 이를 계속해서 새로운 키로 저장합니다.

    효율성상의 이유로 이 시나리오는 지원되지 않습니다. 이는 HashMap의 함정이라고 볼 수 있습니다.

    회신하다
    0
  • 취소회신하다