들어가기 전에
해시 함수를 작성할 때 고려할 점을 살펴보도록 하겠습니다.
학습 목표
해시 함수를 작성할 때 고려할 점을 설명할 수 있습니다.
핵심 단어
- 해시
강의 듣기
들어가기 전에
해시 함수를 작성할 때 고려할 점을 살펴보도록 하겠습니다.
학습 목표
해시 함수를 작성할 때 고려할 점을 설명할 수 있습니다.
핵심 단어
강의 듣기
해시 함수
해시 함수를 작성할 때 아래와 같은 점들을 고려해야 합니다.
1. 데이터의 속성
예를 들어, CSSC 아이디가 있다면 CSSC 부분을 제거해야 합니다.
2. 연산이 빨라야 합니다.
3. 두 요소가 "같다면" 같은 값을 반환해야 합니다
4. 같은 실행 환경일 경우 같은 객체라면 같은 값이 나와야 합니다.
5. 코드를 새로 실행하면 객체가 같더라도 다른 값이 나올 수 있습니다.
6. 코드에서 최대한 충돌이 일어나지 않도록 해야 합니다.
생각해보기
1) 코드를 새로 실행한다는 것이 어떤 의미일까요? 왜 다른 값이 나올 수 있을까요?
comment
객체의 hashcode 함수는 객체의 (힙)메모리 상의 주소값을 반환한다. 때문에 같은 객체이더라도 코드를 재실행하게 되면 메모리 주소값이 변경되어 다른 값을 반환하게 된다.
Object 클래스의 toString, equals, hashCode와 같은 메소드들은 오버라이딩을 하지 않으면, 기본적으로 메모리 위치를 기반으로 코드가 실행된다. 객체는 코드가 새로 실행될 때마다 메모리 상의 다른 위치에 할당되기 때문에, toString, equals, hashCode 같은 메소드들을 오버라이딩 하지 않으면, 입력으로 들어온 객체가 같더라도 다른 값을 리턴하게 된다.