Object 클래스의 equals 메서드 및 hashcode 메서드 분석
Object 클래스의 equals 메서드 및 hashcode 메서드 분석
equals
소스 코드
public boolean equals(Object obj) {
return (this == obj);
}
개술
다른 객체가 해당 객체와 동일한지 여부를 나타냅니다.equals 메서드는 빈 객체가 아닌 참조에서 등가 관계를 형성합니다.
x.equals(x)
truex.equals(y)
true를 되돌려주고 y.equals(x)도truex.equals(y)
true를 되돌려주고 y.equals(z)가true를 되돌려주면 x.equals(z)도truex.equals(y)
하거나 일치하는 반환true 또는 일치하는 반환falsex.equals(null)
false를 되돌려줍니다.Object 클래스의 equals() 메서드는 객체 비교에서 가장 가능성이 높은 동일 관계를 갖습니다.즉, 임의의 비공식 인용 값 x와 y에 대해, x와 y가 같은 대상을 인용할 때 ((
x == y
만true를 되돌려줍니다)true를 되돌려줍니다.equals()
가 다시 쓸 때마다hashCode()
방법도 다시 써야 한다는 것을 주의하세요.따라서 hashCode()
방법의 계약을 유지하기 위해 equals()
방법으로 성명한 동일한 대상은 반드시 동일한 해시 코드(산열값)를 가져야 한다.hashCode
소스 코드
public native int hashCode();
개술
대상의 해시 코드를 되돌려줍니다.이 방법은 해시표의 좋은 점을 지지한다. 예를 들어
HashMap
.hashCode
의 계약은 다음과 같다.자바 프로그램의 실행 과정에서 이 방법을 여러 번 호출할 때마다 hashCode
방법은 같은 정수를 되돌려야 합니다.대상의 equals
비교에서 어떤 정보도 수정되지 않았다.한 응용 프로그램의 실행 과정이 같은 프로그램의 다른 실행 과정에 이르기까지 이 정수는 일치할 필요가 없다.2. 만약에 두 대상이 equals(Object)
방법으로 비교한 결과가 같다면 두 대상에서 hashCode
방법으로 생성된 해시 코드는 반드시 같아야 한다.3. 만약에 두 대상이 equals(Object)
방법을 통해 비교한 결과가 같지 않다면 두 대상에서 hashCode
방법을 호출하여 생성한 해시 코드도 같을 필요가 없다.그러나 프로그래머는 서로 다른 대상을 위해 서로 다른 정수를 생성하면 해시표의 성능을 향상시킬 수 있다는 것을 알아야 한다.합리적이고 실행 가능한 것이라면
Object
류 정의hashCode
방법을 통해 서로 다른 대상에게 서로 다른 해시 코드를 생성할 수 있다.(이것은 보통 대상의 메모리 주소를 해시 코드로 바꾸어 실현하지만, 이러한 실현 기술은 자바 언어로 실현할 필요가 없다)참조 링크:https://docs.oracle.com/javase/8/docs/api/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
docker nginx 설치 및 https 접근 설정시작 되 지 않 은 nginx 용 기 를 먼저 삭제 할 수 있 습 니 다. 이 럴 때 IP 주 소 를 통 해 nginx 가 정의 하 는 html 파일 에 직접 접근 할 수 있 습 니 다.그러나 이때 의 방문 은 ht...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.