본문 바로가기

cs(with 매일메일)

[250930화] equals와 hashCode는 왜 함께 재정의해야 할까요?

역할 : 객체의 동등성 비교와 해시값 생성을 위해 사용할 수 있다. 

 

함께 재정의하지 않는다면 ? 

해시값을 사용하는 자료구조(HashSet, HashMap 등)를 사용할 때 문제가 발생할 수 있다. 

 

해시값을 사용하는 자료구조는 hashcode 메서드의 반환값을 사용한다. 

그 반환값이 일치한 후 equals 메서드의 반환값 참일 때만 논리적으로 같은 객체라고 판단한다. 

hashCode메서드를 재정의 하지 않므녀, 객체의 고유한 주소를 사용하기 때문에 객체마다 다른 값을 반환한다.