inflearn logo
강의

Course

Instructor

Data Structures and Algorithms Made Easy with Diagrams (Basics)

Hash table - Concept

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

201

yoohunn

1 asked

0

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

알고리즘

Answer 2

0

gamja5

안녕하세요 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

communityai8509

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

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

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

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

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

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

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

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

큐의 마지막 데이터가 head에 위치해야 하는 이유가 궁금합니다.

0

71

2

이중연결 리스트 데이터 삭제시 질문이 있습니다.

1

60

2

자바스크립트 배열은 동적이 아닌가요?

1

85

2

자바스크립트 배열

0

75

2

코테에서 링크리스트 자료구조를 사용해야 하면, 이번 강의에서 구현한 메서드들도 모두 직접 구현하면 되나요?/

0

148

2

공부 방식 질문 드립니다.

1

115

2

메모이제이션과 타뷸레이션 관련해서 질문드립니다.

1

166

2

병합정렬에서 질문이 있습니다.

2

140

1

병합정렬 질문 있습니다.

1

136

5

데이터 삽입, 삭제 함수 오류 범위 설정

0

156

2

해시 테이블에서 질문이 잇습니다.

2

126

2

시간복잡도 계산 시 1회 연산당 연산량은 왜 고려하지 않는 건가요?

1

146

2

터미널 설정

0

112

2

2:13분 관련 질문입니다

0

89

1

8:47초경부터 9:00초까지 질문입니다.

1

132

2

tail을 삭제하는 경우에 관련해서 질문이 있습니다.

0

106

1

2:36초 head 위치가?

1

108

2

환경구축강의 중 터미널 파일 실행오류

0

159

2

4:58 이중for문 질문있습니다.

0

103

1

hanoi함수 처음 호출에 대해서 여쭤봅니다.

1

127

2

해쉬테이블 데이터 관련해서 질문있습니다.

0

145

2

질문이있습니다.

0

101

1

2번째 복습 스터디📖 를 진행하고 스터디원분들과 나눈 질문들 입니다.(자료구조와 알고리즘)

1

144

2

3:54 질문 clear() 함수

1

77

1