article thumbnail image
Published 2022. 6. 9. 22:45

1. Hash Table이란

알고리즘을 공부하면서 자료구조도 같이 알아볼 때 자주 나오는 Hash가 있습니다

Hash는 간단하게 생각한다면 배열에서 index대신 key로 접근하는 방법이라고 생각하면 됩니다

 

key로 들어오는 값을 hashing(해싱)이라고 해서 실제 주소로 변경시키는 작업을 거쳐 저장시키게 되며 이렇게 저장하게 된다면 별다른 참조없이 특정 값에 바로 접근할 수 있다는 장점을 가지고 있습니다

 

배열을 생각해보면 [0,1,2,3] 배열이 있다고 할 때 index(2)의 값을 가져오려고 0번부터 접근하지만 만약 hash 구조를 사용한다면 0번부터 찾지않고 해싱 방식에 따라 key를 주소로 변환하여 바로 접근하게 됩니다

wikipedia

2. Javascript에서 hash table

JS에서 지원하는 해시테이블은 대표적으로 Object와 Map, Set이 있다고 합니다.
Object를 제외하곤 ES6문법으로 추가되었으며 Map만 다뤄 볼 예정입니다.

const map1 = new Map();

map1.set('a', 1);
map1.set('b', 2);
map1.set('c', 3);

console.log(map1.get('a'));
// expected output: 1

map1.set('a', 97);

console.log(map1.get('a'));
// expected output: 97

console.log(map1.size);
// expected output: 3

map1.delete('b');

console.log(map1.size);
// expected output: 2

 

3. 단순한 문법 정리

.set(key,value) value 추가
.get(key) key를 통한 검색
.size()  map 크기
.delete() key를 통한 삭제

4. 장단점

MDN 공식문서만 봐도 대충 어떻게 사용할 수 있겠구나를 알 수 있었습니다
Map Object에 대표적인 특징으로는 해시를 사용해서 key-value 쌍을 보유함과 동시에 키의 삽입 순서를 기억해서 반복문을 돌릴 수 있다는 것입니다

또한 삽입,삭제가 빈번한 경우 Object보다 더 나은 성능을 가지고 있다고 합니다.

하지만 단점으로는 JSON으로의 변환 등이 지원되지않는다는 단점이 있습니다.

 

 

 

복사했습니다!