반응형
9. equals 메소드를 오버라이드 할 땐 hashCode 메소드도 항상 오버라이드 하자.
Java API Object.hashCode 메소드 spec에 명시
- 애플리케이션 실행 중에 같은 객체에 대해 한 번 이상 호출되더라도 hashCode 메소드는 같은 정수를 일관성있게 반환해야 한다.
- equals(Object) 메소드 호출 결과 두 객체가 동일하다면, 두 객체 각각에 대해 hashCode 메소드를 호출했을 때 같은 정수 값이 나와야 한다.
- equals(Object) 메소드 호출 결과 두 객체가 다르다고 해서 두 객체 각각에 대해 hashCode 메소드를 호출했을 때 반드시 다른 정수 값이 나올 필요는 없다.
그러나 같지 않은 객체들에 대해 hashCode 메소드에서 서로 다른 정수 값을 반환하면, 이 메소드를 사용하는 해시 컬렉션(HashMap, HashSet, Hashtable)의
성능을 향상시킬 수 있음을 알아야 한다.
반응형
'backend > Java' 카테고리의 다른 글
[Effective Java] 23. 새로 작성하는 코드에서는 원천(raw) 타입을 사용하지 말자. (0) | 2009.10.30 |
---|---|
[Effective Java] 19. 타입을 정의할 때만 인터페이스를 사용하자. (2) | 2009.10.27 |
[Effective Java] 15. 가변성을 최소화하자. (2) | 2009.10.19 |
[Effective Java] 11. clone 메소드는 신중하게 오버라이드 하자. (2) | 2009.10.15 |
[Effective Java] 8. equals 메소드를 오버라이딩 할 때는 보편적 계약을 따르자. (4) | 2009.09.24 |
[Effective Java] 5. 불필요한 객체 생성을 피하자 (4) | 2009.09.23 |
[Effective Java] 4. private 생성자를 사용해서 인스턴스 생성을 못하게 하자 (0) | 2009.09.17 |
Eclipse Galileo에 어떤 프로젝트가 있을까? (2) | 2009.08.26 |