hash Code 에 대해 서 꼭 알 아야 할 세 가지.
Objects that are equal must have the same hash code
within a running process
, equals hash code
역명 제: 같은 hash code 의 대상 이 같 습 니 다 (equals).
규범 을 따 르 는 상황 에서 원명 제 는 진실 이 고 역부 명제 만 진실 이다.
또한 이론 적 으로 큰 확률 이 있 습 니 다. 서로 다른 대상 은 같은 hashcode 가 있 습 니 다. 대상 의 hashCode () 방법 은 int 를 되 돌려 주 고 최대 2 ^ 32 에서 hashcode 가 있 으 며 64 비트 가상 컴퓨터 에 서 는 이론 적 으로 대상 이 2 ^ 64 개 (인용 이 소 진 될 때 까지) 가 존재 할 수 있 기 때문에 대상 과 hashCode 사이 에 일대일 관계 가 존재 할 수 없습니다.
Whenever two different objects have the same hash code,
we call this a collision.
hashcode , 。
A collision is nothing critical, it just means that there
is more than one object in a single bucket, so a HashMap
lookup has to look again to find the right object. A lot of
collisions will degrade the performance of a system, but
they won’t lead to incorrect results.
, HashMap ,
。 (
linkedlist), 。
But if you mistake the hash code for a unique handle to an
object, e.g use it as a key in a Map, then you will
sometimes get the wrong object. Because even though
collisions are rare, they are inevitable. For example, the
Strings "Aa" and "BB" produce the same hashCode: 2112.
hascode key , ,
hashcode。 。
HashCodes can change hashcode
, , hashCode ,
,hashCode ;
, javadoc,hashCode
。 。
Whenever it is invoked on the same object more than once
during an execution of a Java application, the hashCode
method must consistently return the same integer, provided
no information used in equals comparisons on the object is
modified. This integer need not remain consistent from one
execution of an application to another execution of the
same application.
그래서:
You may know that cryptographic hash codes such as SHA1 are
sometimes used to identify objects (Git does this, for
which makes collisions virtually impossible. Even with a
gigantic number of objects, the odds of a collision in this
space are far below the odds of a meteor crashing the
computer that runs your program.
, SHA1, id,git
。 ? ,SHA1 160 ,
。 objects,
원문:http://eclipsesource.com/blogs/2012/09/04/the-3-things-you-should-know-about-hashcode/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.