>  기사  >  Java  >  해시코드와 같음의 차이점은 무엇인가요?

해시코드와 같음의 차이점은 무엇인가요?

hzc
hzc원래의
2020-07-03 11:59:456015검색

hashcode와 같음의 차이점은 다음과 같습니다. 1. 두 객체가 true를 반환하면 hashCode도 동일한 정수 숫자를 반환해야 합니다. 2. 두 객체 hashCode가 동일한 정수 숫자를 반환하면 같음이 반드시 true를 반환하는 것은 아닙니다.

해시코드와 같음의 차이점은 무엇인가요?

해시코드: 객체의 초기 주소를 정수로 표현합니다.

Java의 객체는 JVM에 의해 관리되며 JVM은 적절하다고 판단될 때 객체를 이동합니다. 알고리즘 하에서 발생하는 메모리 조각 모음 GC입니다. 이때 객체의 주소는 변경되지만 해시코드는 변경되지 않습니다. ​​

hashCode는 해시 구조 저장소에서 검색 효율성을 향상시키기 위한 것이며 선형 테이블에는 영향을 미치지 않습니다.

  1. 일반적으로 클래스의 객체가 HashTable, HashSet, HashMap 등과 같은 해시 저장 구조에 저장되는 경우 같음을 다시 작성한 후 hashCode를 다시 작성하는 것이 가장 좋습니다. 그렇지 않으면 고유성이 없게 됩니다. 저장된 데이터의 개수(두 개의 데이터가 저장됨)는 동일한 데이터와 같습니다. 이러한 해시 구조에 저장되지 않을 것으로 판단되면 hashCode를 다시 작성할 필요가 없습니다.

  2. 두 객체가 true를 반환하면 hashCode도 동일한 int 숫자를 반환해야 합니다.

  3. 두 개체가 false를 반환하는 경우 hashCode가 반드시 다른 정수 숫자를 반환하는 것은 아니지만 동일하지 않은 개체에 대해 다른 hashCode 값을 생성하면 해시 테이블의 성능을 향상시킬 수 있습니다.

  4. 두 개체의 hashCode가 동일한 int 숫자를 반환하는 경우 같음이 반드시 true를 반환하는 것은 아닙니다.

  5. 두 개체의 hashCode가 서로 다른 정수 숫자를 반환하는 경우 같음은 false를 반환해야 합니다.

  6. 실행 중에 동일한 객체가 이미 컬렉션에 저장되어 있는 경우 hashCode 값에 영향을 미치는 관련 정보를 수정할 수 없으며, 그렇지 않으면 메모리 누수가 발생합니다.

  7. 일반적으로 개체 간의 크기를 비교할 때는 Equals 메서드를 재정의해야 합니다.

추천 튜토리얼: "java 튜토리얼"

위 내용은 해시코드와 같음의 차이점은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.