값 객체의 동등성과 hash 기반 컬렉션 동작을 맞춥니다.
equals가 같은 두 객체는 반드시 같은 hashCode를 반환해야 HashMap과 HashSet에서 같은 키로 취급됩니다. 식별 엔티티와 값 객체의 동등성 기준을 섞지 않습니다.
불변 필드를 기준으로 equals와 hashCode를 만들고 상속 계층에서 대칭성·추이성이 깨지지 않는지 검토합니다.
IDE 생성 코드나 record를 사용하더라도 어떤 필드가 업무상 동일성을 뜻하는지 먼저 결정합니다.
컬렉션에 넣은 뒤 hashCode 기준 필드를 바꾸면 객체를 다시 찾지 못할 수 있습니다.
equals만 재정의하고 hashCode를 빼면 HashSet에 논리적으로 같은 값이 중복될 수 있습니다.
직접 바꿔보세요CourseId 두 개를 HashSet에 넣어 크기가 1인지 확인하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.