아하
생활

생활꿀팁

흰사마귀126
흰사마귀126

Java의 HashSet을 공부하던 중 hashCode에 대해 의문점이 있습니다.

HashSet - hashcode()의 오버라이딩 조건

1) 동일 객체에 대해 hashCode()를 여러 번 호출해도 같은 값을 반환해야 한다.

2) equals()로 비교해서 true를 얻은 두 객체의 hashCode()값은 일치해야 한다.

* false일 때도 두 객체의 hashCode()의 값이 같을 수도 있다.

원래 객체의 값에 의해 나온 hashCode의 값이 일치해야 하는 점은 이해합니다만,

equals로 비교했을 때 false가 나온 경우에도 hashCode()의 값이 같을 수도 있다고 써있더라구요.

그 이유가 무엇인가요? 그리고 그렇게 됐을 때, hashCode를 이용해서 비교할 수는 없지 않나요?

    2개의 답변이 있어요!