본문 바로가기
JAVA

[JAVA] equals() 메소드 , hashCode() 메소드

by happenstance 2021. 7. 27.

모든 클래스는 Object 클래스를 상속받기 때문에 equals, hashCode, toString 메소드를

작성하지 않아도 사용할 수 있다.

 

 

equals() 메소드

   - Object 클래스의 equals() 메소드는 비교 연산자인 ==과 동일한 결과를 리턴한다.

     두 객체가 동일한 객체이면 true를 리턴하고, 그렇지 않으면 false를 리턴한다.

   - Person 클래스에서 equals() 메소드를 재정의 한다.

     main을 재실행하면 true를 리턴하는 것을 확인할 수 있다.

   - 현재 p1, p2에는 동일한  값이 저장되어 있다.

     Set은 데이터를 중복하여 저장하지 않으나 Set의 size()는 hashCode를 이용하기 때문에

     Set의 크기로 2가 리턴되었다.

 

hashCode() 메소드

   - 두 개의 값이 같으면 hashCode()가 true를 리턴하게 하려 한다.

   - Person 클래스에 hashCode() 메소드를 재정의 한다.

   - main을 재실행하면 리턴값이 같아진 것을 확인할 수 있다.

 

equals() 메소드와 hashCode() 메소드를 직접 작성하지 않아도

자동으로 재정의 해주는 기능도 있다. (Alt + Shift + S -> Generate hashCode() and equals())