진짜 개발자
본문 바로가기

CS(Computer Science)/자료구조

자료구조 - HashMap(해시맵)

728x90

Hash 자료구조란

- Key와 Value를 갖는 자료구조.

- 효율적인 검색을 위해 사용된다.

- 링크드리스트 같은 자료구조 처럼 처음부터 찾아 나감이 아닌 임의의 길이의 키값을 해시 함수 하여

  해당 자료가 위치한 버킷의 주소값을 바로 알아내어 찾아갈 수 있다.

그림출처 - Wiki


용어


1. HASH 함수란

- 임의의 길이의 데이터를 고정길이의 데이터로 매핑하는 함수

- 아래의 그림을 보면 John Smith 를 해시 함수하여 02라는  해시값을 얻어낸 것을 볼 수 있다.


  그림 출처 - https://preamtree.tistory.com/20


     

문제점*비둘기집 원리에 의해 해시함수의 결과값이 중복 될 수 있다. 이는 해시 충돌이라는 문제를 야기한다.


2. HASH란

- 해시 함수의 결과값으로 얻어지는 것으로 해시 값, 해시 코드, 체크섬, 해시 라고한다.

- 해시테이블 , 해시맵에 특정 자료가 저장되어있는 버킷의 키값으로 사용된다


3. Hash Table 이란

- 레코드를 한 개 이상 보관할 수 있는 버킷(Bucket)들로 구성된 기억공간

- 각버킷은 몇개의 슬롯으로 구성 되어 있다.


4. OverFlow란

- 여러개의 키값이 공통된 버킷을 가리키는 경우 버킷들의 공간은 유한하여 결국 버킷이 꽉차게 된다 

   이때 또하나의 키값이 해당 버킷에 매핑된다면 오버플로우가 발생한다.

- 간단히 말해 꽉찬 버킷에 또 다른 레코드를 저장하는 경우 발생한다.


5. 해시충돌(Hash Collision)이란

- 임의의 키값을 해시함수하여 같은 버킷을 가리키는 해시값이 출력되는것

- 다른 키값을 가진 레코드가 동일 버킷에 매핑되는 것

해시충돌과 OverFlow - http://galid1.tistory.com/170