동등성

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

    일단 동일성과 동등성에 대해서 한번 정리해보자면, 동일성 객체의 주소값을 비교하여 판별 동등성 객체의 값을 비교하여 판별 두 객체의 주소가 달라서 다른 객체라도 값이 같으면 동등함. 동등성을 지키기 위해서 해야할 것 equals() 재정의 기본 동작은 == (동일성 비교) 재정의를 통해 값 비교로도 결과를 반환하게 해야함 hashCode() 재정의 기본 동작으로 인스턴스가 저장된 가상머신의 주소를 반환함 Collection(HashSet, HashMap, HashTable) 의 경우 hash 를 이용하기에 equals() 만 재정의하면 같은 값이어도 주소가 달라 동등하지 않다고 판단하는 경우가 있을 수 있음.