equal 과 hashcode 문답
5526 단어 jdk일 하 다performance
1.hashcode()는 도대체 무엇 에 쓰 입 니까?데이터 구조의 hash 표 와 관련 이 있 는 것 같은 데?자바 대상 이 어떻게 hash 표 와 관련 이 있 습 니까?자바 의 대상 은 모두 hash 표 에 존재 합 니까? 대상 이 HashSet,HashMap,HsahTable 등 hash 표를 작업 메커니즘 으로 하 는 용기 에 저 장 될 때 너 야 말로 이 함수 에 관심 을 가 져 야 한다.자바 의 대상 이 아니 라 모두 hash 표 안에 존재 한다.
2.왜 a.equal(b)==true 는 반드시 a.hashcode()=b.hashcode()입 니 다.equal 은 내용 을 대표 하고 hashcode 는 메모리 주 소 를 대표 합 니 다.제 가 잘못 이해 한 것 입 니까? 누가 equals 가 내용 비교,기본 equals 라 고 했 습 니까? 바로 == 동일 한 효과 3.여러 종류 가 hashcode 를 다시 썼 습 니 다.예 를 들 어 Integer.hashcode 는 Integer 의 intValue 를 되 돌려 줍 니 다.그들 은 왜 다시 쓰 려 고 합 니까? Integer 가 equals()를 다시 썼 기 때 문 입 니 다. 방법. ,그래서 hsahCode()를 다시 써 서 a.equals(b)를 확보 해 야 합 니 다. true 일 때 a==b 가 있 습 니 다.다시 쓰기 만족 을 위해 Integer 대상 을 hash 용기 에 넣 을 수 있 습 니 다. 4.누군가가 a.equal(b)==true 는 반드시 a.hashcode()=b.hashcode()라 고 말한다.반대로 a.hashcode()=b.hashcode()는 반드시 a.equal(b)==true 가 아니다. 그것 은 이상 하 다.hashcode 는 쓸모 가 없 지 않 겠 는가?다 들 해시 코드 로 뭐 하 세 요? hsahCode()를 사용 하면 hash 용기 의 올 바른 운행 을 지원 합 니 다.hash 용 기 는 hashCode 에 따라 대상 의 저장 위 치 를 결정 합 니 다. hash 용기 속도 가 빠 릅 니 다.
========================================================================
[JDK 의 설명]
1,equals
public boolean equals
(Object
obj)
Indicates whether some other object is "equal to" this one.
The
equals
method implements an equivalence relation on non-null object references: x
, x.equals(x)
should return true
. x
and y
, x.equals(y)
should return true
if and only if y.equals(x)
returns true
. x
, y
, and z
, if x.equals(y)
returns true
and y.equals(z)
returns true
, then x.equals(z)
should return true
. x
and y
, multiple invocations of x.equals(y) consistently return true
or consistently return false
, provided no information used in equals
comparisons on the objects is modified. x
, x.equals(null)
should return false
. The equals method for class
Object
implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values x
and y
, this method returns true
if and only if x
and y
refer to the same object ( x == y
has the value true
). Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes.
Parameters:
obj
- the reference object with which to compare. Returns:
true
if this object is the same as the obj argument; false
otherwise. See Also:
hashCode() ,
Hashtable
2,hashCode
public int hashCode
()
Returns a hash code value for the object. This method is supported for the benefit of hashtables such as those provided by
java.util.Hashtable
. The general contract of
hashCode
is: hashCode
method on each of the two objects must produce the same integer result. As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)
Returns:
a hash code value for this object.
See Also:
equals(java.lang.Object) ,
Hashtable
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
2022년 3월 21일 TIL1. JVM & JDK JVM JRE 자바 실행 환경의 약자로 자바 프로그램을 실행하기 위한 도구들이 들어있으며 JVM이 이 안에 포함된다 JDK JRE + 개발툴 javac는 컴파일 명령어 HelloWorld.cl...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.