선형 자료구조중 하나로, 키값으로 빠르게 데이터를 접근할 때 사용하는 자료구조이다.
대부분의 선형 자료구조의 데이터 탐색 시간 복잡도가 O(n) 이라면 해시 테이블은 거의 O(1)이라 할 수 있다.


서로 다른 키들이 해시 함수를 통해 해시 값이 동일하게 나온 경우, 해시 테이블의 같은 공간에 서로 다른 값을 저장하려는 오류(충돌)이 발생하게 된다.
이를 해결 하는 방법으로는 크게 개방 주소법와 분리 연결법이 있다.
충돌 시, 테이블에 비어 있는 공간의 해시(=인덱스)를 찾아 데이터를 저장한다.
군집화 문제가 발생충돌 발생 지점 부터 이후의 빈 공간을 순서대로 탐사하는 방법

충돌 발생 지점 부터 이후의 빈 공간을 n^2 간격으로 탐사하는 방법

해싱 함수를 이중으로 사용하는 방법으로, 최초 해시 함수로 충돌이 발생하면 두 번째 해시 함수를 이용한다. 두번 째 해시 함수를 이용 시 테이블 크기보다 작은 소수를 이용한다.
// 예시
int hash2 = 1 + hash1 % primeNumber;
동일한 공간에 저장되어야 하기 때문에 공간에 체인을 통해 값을 연속적으로 저장한다.
O(n)