1. 해시 Hash란?
해시(Hash)는 데이터를 고유한 값으로 변환하는 과정을 의미한다. 데이터를 입력받아 고정된 크기의 값으로 변환하며, 이는 데이터 식별과 검색 효율성을 높인다.
2. 해시 함수 Hash Function
해시 함수는 임의의 데이터를 입력받아 고정된 길이의 문자열이나 숫자(해시값)를 반환하는 함수다.
- 해시 함수의 특징:
- 같은 입력값에 대해 항상 같은 출력값 반환
- 다른 입력값에 대해 가능한 한 다른 출력값 생성(충돌 최소화)
- 빠른 계산 속도
3. 해시 테이블 Hash Table
해시 테이블은 키(key)를 해시 함수로 변환한 값을 인덱스로 사용하여 데이터를 저장하는 자료구조다.
- 해시 테이블의 특징:
- 해시 함수를 사용해 빠르게 데이터 조회 가능
- 키-값 쌍 저장 방식
- 효율적인 데이터 검색과 삽입 가능
4. 해시맵 HashMap
해시맵은 해시 테이블을 기반으로 구현된 자료구조로, 키-값 쌍 데이터를 효율적으로 저장하고 조회할 수 있다.
- 해시맵의 특징:
- 해시 테이블의 일종
- Java의 HashMap, JavaScript의 Map, Python의 dict 등이 대표적
- 빠른 데이터 검색, 삽입, 삭제 가능
- JS의 Map이 HashMap라 생각하면 된다
5. 객체(Object)와 해시(Hash)의 차이점
자바스크립트 객체는 내부적으로 해시 테이블과 유사하게 동작하지만, 엄밀히 말하면 같은 개념은 아니다.
객체 | 해시 | |
개념 | 키-값을 저장하는 자료구조 | 데이터를 고유한 값으로 변환하는 과정 |
키 타입 | 문자열 또는 심볼 | 키 제한 없음(해시 함수의 입력값은 다양할 수 있음) |
구현 방식 | 내부적으로 해시 테이블과 유사한 구조 사용 | 데이터를 해시 함수로 변환하는 과정만 의미 |
결론
- 해시(Hash): 데이터 변환 과정
- 해시 함수(Hash Function): 데이터 변환을 수행하는 함수
- 해시 테이블(Hash Table): 해시 값을 사용한 키-값 자료구조
- 해시맵(HashMap): 해시 테이블을 활용한 구체적인 자료구조의 일종
- 객체(Object): 자바스크립트에서 해시 테이블과 유사하게 키-값을 저장하는 자료구조
이처럼 각 용어는 서로 관련이 있지만, 개념과 사용 목적에서는 분명한 차이가 있다.