적절한 해쉬 메소드를 사용하여 hashCode 함수를 구현해주어야한다.
equals 메소드에서 비교하지 않은 필드는 hashCode 필드에서 제외시켜야함.
만약 해쉬 코드 연산비용이 중요한 클래스라면 lazy initializtion 을 할수있다.
@Override public int hashCode() {
int result = 17;
result = 31 * result + areaCode; // 모두 short 형
result =31 * result + prefix;
result = 31 * result + lineNumber;
return result;
}
private volatile int hashCode;
@Override public int hashCode() {
int result =hashCode;
// 한번만 해쉬코드 설정해주고 계속 사용
if (result == 0) {
int result = 17;
result = 31 * result + areaCode; // 모두 short 형
result =31 * result + prefix;
result = 31 * result + lineNumber;
hashCode = result;
}
return result;
}