해시맵 (Hashmap) 설명:
해시맵 또는 해시 테이블은 키-값 쌍을 저장하는 데이터 구조입니다. 해시 함수를 사용하여 키를 해시 코드로 변환하고, 이 해시 코드를 인덱스로 사용하여 값에 빠르게 접근할 수 있습니다. JavaScript에서는 내장 객체인 Object나 Map 객체를 통해 해시맵과 유사한 기능을 구현할 수 있습니다.
JavaScript에서의 해시맵 사용 방법:
let obj = {};
// 값 저장
obj["key1"] = "value1";
// 값 검색
let value = obj["key1"];
console.log(value); // "value1"
// 키 존재 여부 확인
console.log("key1" in obj); // true
// 키-값 삭제
delete obj["key1"];
let map = new Map();
// 값 저장
map.set("key1", "value1");
// 값 검색
let value = map.get("key1");
console.log(value); // "value1"
// 키 존재 여부 확인
console.log(map.has("key1")); // true
// 키-값 삭제
map.delete("key1");
// 모든 키-값 삭제
map.clear();
// Map 객체 순회
map.forEach((value, key) => {
console.log(key, value);
});
해시맵의 장점:
1. 평균적으로 O(1)의 시간 복잡도로 데이터의 저장 및 검색이 가능하다.
2. 키에 대한 고유한 값 저장이 보장된다.
3. 데이터의 동적 추가 및 삭제가 용이하다.
해시맵의 단점:
1. 해시 충돌이 발생할 경우 복잡성이 증가한다.
2. 순서가 보장되지 않는다. (단, JavaScript의 Map은 순서를 보장한다.)
3. 공간 복잡도가 높을 수 있다.
실제 애플리케이션에서는 데이터의 특성과 필요한 연산에 따라 Object 또는 Map 중 적합한 것을 선택하여 사용합니다.