[이펙티브 자바] Item 11. equals를 재정의하려거든 hashCode도 재정의하라
·
Java/Effective Java
핵심 정리equals를 재정의한 클래스 모두에서 hashCode도 재정의해야 한다.HashSet 혹은 HashMap 같은 컬렉션의 원소로 사용할 경우, 문제를 일으킬 수 있기 때문이다.AutoValue 프레임워크를 사용하면 equals, hashCode를 자동으로 만들어 준다. hashCode를 재정의하지 않으면 발생하는 문제Map m = new HashMap();m.put(new PhoneNumber(707, 867, 5309), "제니");m.get(new PhoneNumber(707, 867, 5309)); // null위 코드에서 HashMap의 원소를 꺼내면 `null`을 반환한다.이는 논리적 동치인 두 객체가 서로 다른 해시코드를 반환하였기 때문이다.PhoneNumber의 `hashCode()..