전체 방문자
오늘
어제
모달조아
Better than yesterday
모달조아
  • 분류 전체보기 (147)
    • PS (86)
      • BOJ (79)
      • 프로그래머스 (6)
    • 이론 (41)
      • 자료구조 (2)
      • 알고리즘 (8)
      • 데이터베이스 (1)
      • 운영체제 (1)
      • 네트워크 (3)
      • 디자인패턴 (7)
      • Java (13)
      • Spring (4)
      • JPA (1)
      • Git (1)
    • 개발 (18)
    • 프로젝트 (1)
    • 기록 (0)
      • 후기 (0)
    • etc (1)

최근 글

티스토리

hELLO · Designed By 정상우.
모달조아

Better than yesterday

이론/Java

동등성 비교를 위해 equals(), hashCode() 를 함께 재정의하는 이유

2022. 11. 24. 13:41
일단 동일성과 동등성에 대해서 한번 정리해보자면,
  • 동일성
    • 객체의 주소값을 비교하여 판별
 
  • 동등성
    • 객체의 값을 비교하여 판별
    • 두 객체의 주소가 달라서 다른 객체라도 값이 같으면 동등함.

 

동등성을 지키기 위해서 해야할 것

  • equals() 재정의
    • 기본 동작은 == (동일성 비교)
    • 재정의를 통해 값 비교로도 결과를 반환하게 해야함
  • hashCode() 재정의
    • 기본 동작으로 인스턴스가 저장된 가상머신의 주소를 반환함
    • Collection(HashSet, HashMap, HashTable) 의 경우 hash 를 이용하기에 equals() 만 재정의하면 같은 값이어도 주소가 달라 동등하지 않다고 판단하는 경우가 있을 수 있음.
저작자표시 (새창열림)

'이론 > Java' 카테고리의 다른 글

xms 와 xmx 에 대하여  (0) 2022.12.22
오버로딩과 오버라이딩  (0) 2022.11.22
원시 타입과 참조 타입  (0) 2022.11.22
Checked exception 과 Unchecked exception  (0) 2022.11.22
BufferedReader, BufferedWriter 사용 후 close 해야하는 이유  (0) 2022.11.22
    '이론/Java' 카테고리의 다른 글
    • xms 와 xmx 에 대하여
    • 오버로딩과 오버라이딩
    • 원시 타입과 참조 타입
    • Checked exception 과 Unchecked exception
    모달조아
    모달조아

    티스토리툴바