클래스 Object의 인스턴스 값을 사용하여 클래스 형식의 개체를 클래스 형식의 다른 개체와 비교하려면 Object 클래스의 equals (Object) 메서드를 재정의하는 클래스를 작성했습니다.HashMap가 Object.equals를 호출하지 않습니까?
개체를 HashMap에 키로 넣은 다음지도에서 키와 동일한 개체 만 사용하여 get (Object)를 호출하면 null이 반환됩니다.
나는 equals 메서드에 새로운 동일한 개체를 전달하려고 시도했으며 true를 반환하므로 문제가 내 비교 코드가 아닙니다.
디버깅을 통해 수집 한 내용에서 내 개체의 equals (Object) 메서드가 호출되지 않습니다.
그러나 HashMap에서 String 키를 사용한 다음 동일한 문자를 사용하여 새 인스턴스를 get (Object)에 전달하면 값을 성공적으로 반환합니다.
왜 이런 일이 발생합니까? MY equals 메서드를 기반으로 HashMap 테스트 키를 사용하려면 어떻게해야합니까?
그래서 hashCode()는 equals()가 true 인 경우 동일한 정수를 반환해야합니까? – bgroenks
수정하십시오. 평등을 찾기 위해 'equals'가 사용하는 것과 동일한 멤버를 사용하여 해싱 알고리즘을 작성하는 것이 좋습니다. –
정수가 무슨 상관입니까? Hashtables는 용량 및 부하율에 대해 2의 제곱을 사용합니까? – bgroenks