인프런 커뮤니티 질문&답변

baileypark님의 프로필 이미지
baileypark

작성한 질문수

김영한의 실전 자바 - 중급 2편

equals, hashCode의 중요성2

Generate로 hash 생성시, hash()와 hashCode()

해결된 질문

작성

·

224

0

Generate를 이용해서

Hash 생성시

@Override
public int hashCode() {
    return Objects.hashCode(id);
}

와 같이 영상과는 달리 hash()가 아닌 hashCode()가 생성되어 결과물이 미묘하다 다릅니다.

검색해보니, hash가 hashCode 배열 처리된 걸로 알고 있어서 차이가 있다는 건 알겠는데

@Override
public int hashCode() {
    return Objects.hash(id);
}

일부러 Code를 삭제해서 영상처럼 위와 같이 실무에서도 hash를 기반으로 사용할지, 아니면 IDE에서 기본으로 제공하는 대로 hashCode를 사용해도 딱히 상관이 없나요?

답변 1

2

안녕하세요. baileypark님, 공식 서포터즈 y2gcoder입니다.

아시는 것과 같이 Objects.hash()는 여러 필드를 받아서 해시 코드를 만들어주고, Objects.hashCode()는 단일 필드를 이용해 해시 코드를 만들어 주고 있습니다!

IDE가 똑똑하게도 여러 필드를 사용할 때는 Objects.hash()를 사용해서 hashCode()를 오버라이딩해주고, 하나의 필드만 가지고 오버라이딩한 hashCode()를 만드려고 하면 Objects.hashCode()를 사용하는 것을 보실 수 있습니다.

그래서 저도 실무에서는 큰 고민하지 않고 IDE가 생성해주는 equals()와 HashCode()를 신뢰하고 사용합니다

감사합니다.

baileypark님의 프로필 이미지
baileypark

작성한 질문수

질문하기