잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).
여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.
감사합니다. -현록
현록의 기록저장소
Java의 hashCode 본문
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);
null이면 0, null이 아니면 obj.hashCode();
위의 그냥 단일 개체의 obj.hashCode()를 호출해주는 것 뿐.
public static int Objects.hash(Object...);
== Arrays.hashCode(Object[]);
public static int Arrays.hashCode(Object[] objs);
== 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);
objs 중에 배열 등의 요소가 있다면,
그 개체에 대한 hashCode는 각 요소를 꺼내어 그 요소끼리 Arrays.asList(Object[]).hashCode()한 결과로
재귀적으로 반환하면서 각 요소들을 고려함.
'Study > Java' 카테고리의 다른 글
Java - volatile 키워드, synchronized 키워드 (0) | 2022.08.07 |
---|
잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).
여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.
감사합니다. -현록