Map 최종 수정일 2026-06-23 00:55 조회수 1
대시보드

Map

기본 정보

  • 명칭: Map
  • 분류: 키-값(Key-Value) 자료구조
  • 관련 자료구조: HashMap, Dictionary, Object
  • 주요 용도: 빠른 데이터 조회 및 저장
  • 관련 주제: #Map #HashMap #자료구조 #JavaScript

개요

Map은 키(Key)와 값(Value)을 한 쌍으로 저장하는 자료구조이다.

배열(Array)은 인덱스로 접근하지만, Map은 키를 통해 데이터를 조회한다.

실제로 대부분의 언어에서 Map은 내부적으로 Hash Table(해시 테이블) 구조를 사용하며, 평균적으로 매우 빠른 조회 성능을 제공한다.


구조

Map

↓

Key

↓

Value

예시

"user1" → "구름"

"user2" → "철수"

"user3" → "영희"

JavaScript Map 생성

const users = new Map();

데이터 추가

users.set("user1", "구름");
users.set("user2", "철수");

데이터 조회

users.get("user1");

결과

구름

데이터 존재 여부

users.has("user1");

결과

true

데이터 삭제

users.delete("user1");

전체 삭제

users.clear();

크기 확인

users.size

반복문

for(const [key, value] of users){

    console.log(key, value);

}

시간 복잡도

작업시간 복잡도
조회O(1)
추가O(1)
삭제O(1)
전체 탐색O(N)

평균 기준이다.


배열과 비교

배열 검색

const arr = [

"구름",

"철수",

"영희"

];

arr.includes("영희");

시간복잡도

O(N)

Map 검색

users.has("영희");

시간복잡도

O(1)

왜 빠른가?

배열

1

↓

2

↓

3

↓

4

↓

찾음

순차 탐색


Map

Hash

↓

주소 계산

↓

즉시 접근

해시 함수를 사용하기 때문이다.


HashMap 원리

Key

↓

Hash Function

↓

Bucket

↓

Value

예시

"user1"

↓

12345

↓

메모리 위치

↓

"구름"

실무 예제

회원 캐시

const members = new Map();

members.set(

1,

{

name:"구름"

}

);

방문자 수 집계

const count = new Map();

count.set(

"php",

100

);

count.set(

"javascript",

250

);

중복 제거

const arr =

[1,1,2,3,3];

const unique =

[...new Set(arr)];

Map/Set 계열 자료구조가 많이 사용된다.


Object와 Map 차이

ObjectMap
문자열 Key 중심모든 타입 Key 가능
크기 확인 불편size 지원
순회 제한반복문 지원
성능 차이 존재대량 데이터에 유리

PHP 배열도 사실상 Map

PHP

$user = [

"name" => "구름",

"age" => 30

];

내부적으로 Hash Table 구조를 사용한다.


Python Dictionary

users = {

"name":"구름",

"age":30

}

Dictionary 역시 HashMap 기반이다.


Java HashMap

Map<String,String>

users =

new HashMap<>();

실무에서 가장 많이 사용되는 자료구조 중 하나이다.


언제 사용하는가?

다음 상황에서는 Map 사용이 유리하다.

  • 회원 조회
  • 캐시 시스템
  • 중복 체크
  • 방문자 집계
  • 검색 기능
  • 데이터 매핑

코딩테스트 단골

빈도수 계산

const map = new Map();

for(const word of words){

    map.set(

        word,

        (map.get(word)||0)+1

    );

}

중복 체크

const set = new Set();

for(const item of arr){

}

실무 메모

실무에서는 다음과 같은 방식이 권장된다.

  • 검색이 많으면 Array보다 Map 사용
  • 중복 제거는 Set 활용
  • 회원 정보 캐시 저장
  • API 응답 캐싱
  • 방문자 통계 집계
  • 대량 데이터 검색 최적화
  • Key 설계 명확히 하기
  • 메모리 사용량 고려
  • Object 대신 Map 검토
  • 시간복잡도 O(1) 활용

Map과 함께 사용하는 기술


대표 면접 질문

  • Map과 Object 차이는?
  • HashMap이 빠른 이유는?
  • Map의 시간복잡도는?
  • Hash Collision이란?
  • Set과 Map 차이는?
  • Array 대신 Map을 사용하는 이유는?

관련 문서


출처

  • MDN Web Docs
  • Java HashMap 공식 문서
  • Python Dictionary 구현 문서