인프런 커뮤니티 질문&답변
섹션 7. 직접 구현하는 Set3
해결된 질문
작성
·
219
0
여기에서 hashCode의 값이 선생님과 다르게 출력되는데 잘못된 게 맞나요?
문자 고유의 값이니까 같은 문자라면 어느 컴퓨터나 같은 hashCode가 출력되야 하는 게 맞는거죠??
public class MyHashSetV2Main2 {
    public static void main(String[] args) {
        Member hi = new Member("hi");
        Member jpa = new Member("JPA"); // 대문자 주의!
        Member java = new Member("java");
        Member spring = new Member("spring");
        System.out.println("hi.hashCode() = " + hi.hashCode());
        System.out.println("jpa.hashCode() = " + jpa.hashCode());
        System.out.println("java.hashCode() = " + java.hashCode());
        System.out.println("spring.hashCode() = " + spring.hashCode());
        MyHashSetV2 set = new MyHashSetV2(10);
        set.add(hi); // Member 타입의 인스턴스를 myHashSetV2에 넣음.
        set.add(jpa);
        set.add(java);
        set.add(spring);
        System.out.println("set = " + set);
        //검색
        Member searchValue = new Member("JPA");
        boolean result = set.contains(searchValue);
        System.out.println("hi.contains(" + searchValue + ") = " + result);
    }
       //출력 결과
       hi.hashCode() = 3329
       jpa.hashCode() = 73659
       java.hashCode() = 3254818
       spring.hashCode() = -895679987
답변 1
Member클래스의 재정의한 hashCode() 의 구현 코드를 보면
@Override public int hashCode() { return Objects.hashCode(id); }
return Objects.hashCode()로 되어있습니다.
return Objects.hash()로(=강의코드) 확인해보시겠어요?








Member 클래스에 hashCode 오버라이딩도 새로 해봤는데 다르게 나옵니다 ㅠㅠ