ppobbi-study / CS_Study_Hub

CS 스터디 레포입니다.
3 stars 6 forks source link

equals와 hashcode에 대해 설명해주세요 #81

Open freakFlow opened 5 months ago

SunheeYoon96 commented 5 months ago

답변

equals가 구현된 방법은 2개의 객체가 참조하는 것이 동일한지를 확인하는 것이지만, 프로그래밍상으로 객체 비교를 할 때는 같은 값을 지니면 같은 객체로 인식해야하기 때문에 우리는 동등성(Equality)를 위해 equals()메서드를 오버라이딩 하는 것입니다. 또한 동일한 객체는 동일한 메모리 주소를 갖는다는 것을 의미하므로, 동일한 객체는 동일한 해시코드를 가져야합니다. 그렇기 때문에 equals() 메서드를 오버라이드 한다면, hashCode() 메서드도 함께 오버라이드 해줘야합니다.

kimmainsain commented 5 months ago

답변

freakFlow commented 5 months ago

답변

equals메소드는 객체의 주소값을 비교하는 메소드이고, hashcode는 객체의 주소값으로 만든 해쉬값을 반환하는 메소드입니다. 다만 객체의 주소값이 아닌 필드값을 비교해야 할 경우에 equals 메소드를 오버라이딩하여 사용합니다. equals 메소드를 오버라이딩 할 경우, hashcode값도 같이 오버라이딩해줘야하는 데 그 이유는 hash값을 사용하는 collection을 사용할 때 의도하지 않은 결과를 초래할 수 있기 때문입니다.

Seobway23 commented 5 months ago

equals

equals() 메소드는 두 객체가 논리적으로 동일한지 판단하는 데 사용됩니다.

hashCode

hashCode() 메소드는 객체가 저장되는 해시 테이블의 버킷을 결정하는 데 사용됩니다.