728x90
반응형
자바에서 제공하는 map대해 먼저 살펴보자
hashmap
해싱은 해시 함수에 문자열 입력값을 넣어서 특정한 값으로 추출하는 것을 의미한다.
해시 함수
임의의 길이를 갖는 임의 데이터를 입력받아 고정된 길이의 데이터로 매핑하는 단방향 함수를 말한다.
- 입력값의 길이가 달라도 출력값은 언제나 고정된 길이의 비트열로 반환한다.
- 동일한 값이 입력되면 언제나 동일한 출력값을 보장한다.

hashmap은 해시 함수를 통해 키와 값이 저장되는 위치를 결정하므로, 사용자는 그 위치를 알 수 없고,
삽입되는 순서와 들어 있는 위치 또한 관계가 없다.
TreeMap
이진트리를 기반으로 한 Map 컬렉션이다.
TreeMap에 객체를 저장하면 자동으로 정렬되는데 키는 저장과 동시에 오름차순으로 정렬된다.
-> 레드 블랙 트리의 자료구조를 이용한다.
(기존의 avl 트리보다 색 규칙을 통해 높이 1이하라는 규칙보다 완만한 트리)
둘의 비교
- 빠른 검색/삽입/삭제가 중요 → HashMap
- 정렬된(Key가 오름차순) 탐색이 필요 → TreeMap
- 범위 탐색 (subMap, tailMap) → TreeMap
- 키 순서가 필요 없는 대부분의 상황 → HashMap이 훨씬 효율적
다른 언어에서의 map을 알아봤으니 js의 map에 대해 그러면 알아보자
js의 map은?
JavaScript의 Map은 내부적으로 해시 테이블일 수도 있고,
균형 트리일 수도 있고, 다른 자료구조일 수도 있다.
구현 방식은 엔진(v8, SpiderMonkey 등)마다 다를 자유가 있다.
ECMAScript 표준의 철학
- API 동작만 보장하고 내부 구현은 강제하지 않는다.
- 엔진 제작자가 최적화를 마음대로 할 수 있어야 성능 경쟁이 생김.
- 브라우저/Node 엔진은 계속 발전해야 하므로 내부 구현을 자유롭게 유지.
따라서 정해진 자료구조가 아니다.
객체 vs map
| 비교 | object | map |
| 성능 | 키-값 쌍의 빈번환 추가 및 제거와 관련된 상황에서는 성능이 좋음 | 기-값 쌍의 비번한 추가 및 제거에 최적화 x |
| 크기 | map의 아이템 수는 size 속성에서 쉽게 가져올 수 있음 | object의 아이템 수는 수동으로 결정해야 함 |
| 키 유형 | map의 키는 모든 값이 될 수 있음 | object의 키는 string 또는 symbol이어야 함 |
반응형
'CS' 카테고리의 다른 글
| [CS] HTTP (1) | 2025.11.08 |
|---|---|
| 웹 폰트 어디까지 알고 있니? (0) | 2025.10.21 |
| 자바스크립트 비동기 (0) | 2025.10.10 |
| css의 라이브러리에 대해 알아보자 (0) | 2025.10.09 |
| [보안] 비밀번호 평문으로 보내는 것은 상관 없을까? (3) | 2025.07.31 |