인프런 커뮤니티 질문&답변

yoohunn님의 프로필 이미지

작성한 질문수

그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)

해시테이블 - 개념

자바스크립트 Map과 어떤 차이가 있나요??

작성

·

16

0

이어지는 강의에서 구현해주신 HashTable을 자바스크립트 Map을 사용해서 구현해도 되나요? 안된다면 둘의 차이점이 뭔지 헷갈립니다ㅜㅜ 친절한 강의 감사드려요!

답변 2

0

감자님의 프로필 이미지
감자
지식공유자

안녕하세요 yoohunn님!

해시테이블과 자바스크립트의 Map에 대해서 궁금증이 생기셨군요.

우선 우리는 순수한 자료구조의 차원에서 해시테이블의 개념을 살펴보고 구현까지 해본 것인데요.

자바스크립트에서 해시테이블과 유사한 구조는 자바스크립트의 객체,말씀하신 Map이 있습니다.

결론부터 말씀드리자면 우리가 배운 해시테이블과 자바스크립트의 객체, Map은 큰 차이가 없이 모두 해시테이블로 불릴 수 있는 자료구조입니다.

다만 디테일에서 몇 가지 차이점이 있는데 차이점을 설명드리겠습니다.

 

자바스크립트의 Map

자바스크립트의 Map은 우리가 배운 해시테이블보다 Key에 대해서 더 많은 유연성이 있습니다.

우리는 Key를 문자열만 지원하도록 구현했지만, Map은 모든 데이터 유형을 지원합니다.

또한 Map은 Key, Value 삽입의 순서를 유지합니다.

 

자바스크립트 객체

자바스크립트의 객체는 우리가 배운 해시테이블보다 Key에 대해서 더 많은 유연성이 있지만, Map보다는 제한적입니다.

객체는 Key 값으로 문자열, 심볼을 지원합니다.

그리고 object['key']로 간단한 생성과 조회를 할 수 있고 Key, Value 삽입의 순서를 유지하지 않습니다.

 

전통적인 해시테이블(강의에서 배운 해시테이블)

우리가 강의에서 배운 해시테이블로 자바스크립트의 객체, Map에 비하면 기능이 적습니다.

구현에 따라 Key, Value 삽입 순서를 유지하거나 유지하지 않을 수 있는데 우리는 유지하는 쪽으로 코드를 작성했습니다.

자바스크립트 객체, Map과 우리가 배운 해시테이블의 공통적인 특징은(좋은 해시 함수를 짰다고 가정) 시간 복잡도가 O(1)이라는 것입니다.

이런 이유로 자바스크립트를 실제로 사용할 때는 자바스크립트 객체나 Map을 이용하는 것이 편하고 기능도 더 많아서 이용하지만, 우리는 해시테이블이 어떤 것인지 공부를 하는 단계이기 때문에 직접 구현해보는 것입니다.

Map 자체로 해시테이블이 구현된 것이라 Map을 이용해서도 구현할 수 있겠지만, 개념을 익히는 데는 크게 도움이 되지 않는다고 생각하기 때문에 밑바닥부터 구현해보는 것을 추천합니다!

궁금증이 해결되셨나요?

0

안녕하세요, 인프런 AI 인턴입니다. yoohunn님.

HashTable과 자바스크립트의 Map에 관해 궁금하신 것 같습니다. 두 자료구조는 비슷한 점이 있지만, 몇 가지 중요한 차이점이 있습니다.

  1. 저장 방식: HashTable은 키와 값 쌍을 해시 함수를 사용하여 배열 인덱스에 저장합니다. 반면, Map은 자바스크립트의 객체를 통해 키와 값을 저장하며, 모든 종류의 데이터 타입을 키로 사용할 수 있습니다.

  2. 순서 보장: Map은 항목이 삽입된 순서를 유지합니다. 즉, 반복문을 통해 순회할 때 처음 넣은 순서대로 키-값 쌍이 나옵니다. 반면, HashTable은 순서를 보장하지 않습니다.

  3. 퍼포먼스: 일반적으로 Map은 객체와 배열을 섞어 사용하는 경우보다 성능이 뛰어난 것으로 평가됩니다. 특히 대량의 데이터를 다룰 때 Map의 성능이 더 나을 수 있습니다.

이처럼 HashTable로 구현된 학습 내용과 자바스크립트의 Map은 상황에 따라 선택하여 사용할 수 있습니다. Map을 사용하여 구현해도 무방하지만, 각 자료구조의 장단점을 이해한 후 적절한 쓰임새를 찾아 활용하는 것이 중요합니다.

아래 유사한 질문과 답변을 통해 추가적인 정보를 참고하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

yoohunn님의 프로필 이미지

작성한 질문수

질문하기