잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).

여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.

감사합니다. -현록

후원해주실 분은 여기로→

현록의 기록저장소

Java의 hashCode 본문

Study/Java

Java의 hashCode

현록 2020. 11. 4. 01:03

public int Object.hashCode();

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#hashCode()

개체의 메모리 주소값을 반환 (기본구현)

 

public static int Objects.hashCode(Object obj);

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Objects.html#hashCode(java.lang.Object)

null이면 0, null이 아니면 obj.hashCode();

위의 그냥 단일 개체의 obj.hashCode()를 호출해주는 것 뿐.

 

public static int Objects.hash(Object...);

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Objects.html#hash(java.lang.Object...)

== Arrays.hashCode(Object[]);

 

public static int Arrays.hashCode(Object[] objs);

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Arrays.html#hashCode(java.lang.Object%5B%5D)

== Arrays.asList(objs).hashCode();

objs 중에 배열 등의 요소가 있어도(objs 안의 요소가 또다른 배열),

그 자체 개체에 대한 hashCode만 사용

(내부의 요소들에 대해서는 하지 않음.

단, 이 Array나 Collection 자체에서 내부 요소들을 고려한 hashCode를 반환하도록 구현되어 있기도 함.)

 

public int List.hashCode();

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html#hashCode()

int hashCode = 1;

for (E e : list) {

    hashCode = 31 * hashCode + (e == null ? 0 : e.hashCode());

}

 

public static int Arrays.deepHashCode(Object[] objs);

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Arrays.html#deepHashCode(java.lang.Object%5B%5D)

objs 중에 배열 등의 요소가 있다면,

그 개체에 대한 hashCode는 각 요소를 꺼내어 그 요소끼리 Arrays.asList(Object[]).hashCode()한 결과로

재귀적으로 반환하면서 각 요소들을 고려함.

 

 

'Study > Java' 카테고리의 다른 글

Java - volatile 키워드, synchronized 키워드  (0) 2022.08.07
Comments

잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).

여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.

감사합니다. -현록

후원해주실 분은 여기로→