모든 클래스는 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())
'JAVA' 카테고리의 다른 글
[JAVA] 하나의 스레드와 여러 개의 스레드가 수행되는 시간 비교하기 (0) | 2021.07.30 |
---|---|
[JAVA] 멀티 스레드(multi Thread) - 1 (0) | 2021.07.29 |
[JAVA] enum(열거형) (0) | 2021.07.29 |
[JAVA] 컬렉션 프레임워크 - Map (0) | 2021.07.27 |
[JAVA] 컬렉션 프레임워크 - Set (0) | 2021.07.26 |