해쉬맵(Hash Map)
해쉬맵은 키-값 쌍으로 데이터를 저장하는 자료구조입니다. 해쉬맵은 키(key)와 값(value)으로 구성되며, 키를 통해 값을 검색하고 저장할 수 있습니다. 해쉬맵은 효율적인 데이터 검색을 위해 해시 함수(hash function)를 사용합니다.
동작 방식
- 해시 함수를 사용하여 키를 해시값(해시 코드)으로 변환합니다.
- 변환된 해시값을 인덱스로 사용하여 배열에 해당하는 위치에 데이터를 저장합니다. 이를 해시 충돌(hash collision)이 발생하지 않을 때까지 반복합니다.
- 검색할 때에도 동일한 해시 함수를 사용하여 키를 해시값으로 변환하고, 해당 해시값을 인덱스로 사용하여 배열에서 값을 검색합니다.
해쉬맵의 장점
- 빠른 데이터 검색: 해시 함수를 사용하므로 평균적으로 상수 시간(O(1))에 데이터를 검색할 수 있습니다.
- 높은 성능: 해시 충돌을 최소화하기 위해 충분한 크기의 배열을 사용하면 충돌을 줄일 수 있습니다.
- 유연한 크기 조정: 일반적으로 배열의 크기를 동적으로 조정하여 저장할 수 있는 데이터의 양에 유연하게 대응할 수 있습니다.
해쉬맵의 단점
- 해시 충돌: 서로 다른 키들이 동일한 해시값을 가지는 경우 충돌이 발생할 수 있습니다. 충돌을 해결하기 위한 알고리즘 및 자료구조가 필요합니다.
- 메모리 사용량: 큰 크기의 배열을 사용해야 하므로 메모리 사용량이 상대적으로 크게 증가할 수 있습니다.
- 순서 보장의 어려움: 해쉬맵은 키-값 쌍을 저장하는 구조이기 때문에 저장 순서를 보장하지 않습니다.