데이터의 효율적 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수
매핑 전 데이터의 값(key), 매핑 후 데이터의 값(hash value), 매핑하는 과정(hashing)
중요한 점은 고유한 인덱스를 생성하는 것! → 중복된 인덱스가 발생하는 것을 **충돌(Collision)**이라 한다.
<aside> ☝🏻
해시 충돌이 발생할 가능성이 있는 해시테이블 사용 이유?
해시 함수 종류
분리 연결법 (separate chaining)
개방 주소법 (open addressing)
충돌이 발생하면 빈 공간을 찾아 저장
전체 슬롯의 개수 이상은 저장 불가 (개별 체이닝은 무한정 저장 가능)
모든 원소가 반드시 자신의 해시값과 일치하는 주소에 저장된다는 보장이 없음
<aside> ❓ Java 에서의 HashMap & HashTable 차이?