📌 해시 (Hash) 란?
- Hash는 검색과 저장에서 좋은 성능을 가진다.
- Hash의 핵심은 Key와 Value이다. Key와 Value가 한 쌍으로 존재하는 자료구조이다.
- 이러한 Key와 Value의 한 쌍을 해쉬 테이블 (Hash Table)이라고 한다.
- Key 값은 절대로 중복되지 않는다는 특징을 가지고 있다.
- 같은 Key 값에 Value 값을 넣으면 이전 값은 사라지고 나중에 들어온 값이 Value에 남다.
📌 해시 테이블 (Hash Table) 이란?
- 해시 테이블은 키(Key), 해시함수(Hash Function), 해시(Hash), 값(value), 저장소(Bucket, Slot)로 이루어져 있다.
- Key를 Hash 값으로 매핑하고 이 Hash 값을 주소로 삼아 데이터를 Key와 Value로 저장하는 자료구조이다.
- 해시 테이블은 빠른 검색 속도를 제공하는데 이유는 내부적으로 버킷(배열)을 사용하여 데이터를 저장하기 때문이다.
- 각각의 key 값에 해시 함수를 적용해 배열의 고유한 인덱스를 생성한 후 인덱스를 이용해 값을 저장한다. 실제 값이 저장되는 장소를 버킷이라 한다.
💡 HashCode
해시 함수를 통해 얻는 값으로, 해시를 인덱스 또는 주소로 삼아 Value에 접근이 가능하도록 한다.
📌 해시 테이블 동작방식
- 키(Key) : 고유한 값이며, 해시 함수(Hash Function)의 input이 된다. 해쉬(Hash)로 변경이 되며 해시는 값(Value)과 매칭되어 저장소에 저장이 된다.
- 해시함수(Hash Function) : 키(Key)를 해시(Hash)로 바꿔주는 역할을 한다. 다양한 길이를 가지고 있는 키(Key)를 일정한 길이를 가지는 해시(Hash)로 변경하여 저장소를 효율적으로 운영할 수 있도록 도와준다. 다만, 서로 다른 키(Key)가 같은 해시(Hash)가 되는 경우를 해시 충돌(Hash Collision)이라고 하는데, 해시 충돌을 일으키는 확률을 최대한 줄이는 함수를 만드는 것이 중요하다.
- 해시(Hash) : 해시 함수(Hash Function)의 결과물이며, 저장소(bucket, slot)에서 값(value)과 매칭되어 저장된다.
- 값(Value) : 저장소(Bucket, Slot)에 최종적으로 저장되는 값으로 키와 매칭되어 저장, 삭제, 검색, 접근이 가능해야 한다.
'DataStructure' 카테고리의 다른 글
[Java] 링크드리스트 (LinkedList) 자료구조 (0) | 2023.05.12 |
---|---|
[Java] 해시맵 (HashMap) 자료구조 (0) | 2023.05.11 |
[Java] 덱 / 디큐 (Deque) 자료구조 (0) | 2023.05.10 |
[Java] 큐 (Queue) 자료구조 (0) | 2023.05.10 |
[Java] 스택 (Stack) 자료구조 (0) | 2023.05.08 |