해시맵이란 것은 이름 그대로 해싱(Hashing)된 맵(Map)이란 것이다. 여기서 해싱
, 맵
을 먼저 알아보자.
먼저 해싱
이란 것은 쉽게 말하면 원본 문자열을 알아볼 수 없는 난해한 문자열로 정의하는 과정이라 이해하면 된다. 이런 특성을 이용해서 보안 알고리즘에 사용되거나 빠르게 검색 하기 위해 자료구조에서 사용되기도 한다.
맵
은 뭘까?
맵이라는 것은 키(key)와 값(value)의 쌍으로 데이터를 보관하는 자료구조이다. 여기서 키는 맵에 오직 유일하게 있어야 한다. 그러니까 같은 맵에 두 개 이상의 키가 존재하면 안된다는 이야기.
값은 중복된 값이어도 상관은 없다. 아래 그림은 예시이다.
해시테이블은 해시맵과 함께 Map을 구현한 키와 값 쌍을 데이터로 저장한 컬렉션이다!
여기서 키는 유일해야 한다. 그리고 해시테이블은 이 키를 가지고 키에 해당하는 값을 찾는다.
결론은 동기화 문제이다.
해시테이블은 동기화가 걸려있어 안정성이 높고 해시맵은 동기화가 없어 안정식이 그닥 좋진 않다. 그래서 안전성을 추구한다면 해시테이블을 사용하고 빠른 처리를 원한다면 해시맵을 사용하면 된다.