Loading...
본문 바로가기
👥
총 방문자
📖
0개 이상
총 포스팅
🧑
오늘 방문자 수
📅
0일째
블로그 운영

여러분의 방문을 환영해요! 🎉

다양한 개발 지식을 쉽고 재미있게 알려드리는 블로그가 될게요. 함께 성장해요! 😊

CS

java, js map대해 알아보자

by 꽁이꽁설꽁돌 2025. 11. 16.
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이어야 함
반응형