Backend
home

[Java] Map

생성일
2025/05/23 15:43
태그
Algorithm
게시일
2025/05/24
최종 편집 일시
2025/05/25 07:21

1. Map이란?

Map<K, V>Key를 기준으로 Value를 저장하는 구조이다.
Key는 중복 불가, Value는 중복 가능
대표적인 구현체:
HashMap: 가장 많이 쓰이며, 순서를 보장하지 않음, O(1)의 탐색 성능
LinkedHashMap: 입력 순서 유지
TreeMap: Key 기준 오름차순 정렬 유지
Hashtable: 동기화(synchronized)된 Map
ConcurrentHashMap: 병렬 처리 환경에서 사용

2. Map 기본 사용법

import java.util.*; public class MapExample { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); // 삽입 map.put("apple", 3); map.put("banana", 2); // 조회 System.out.println(map.get("apple")); // 3 // 존재 여부 확인 System.out.println(map.containsKey("banana")); // true // 반복 for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + " => " + entry.getValue()); } // 삭제 map.remove("apple"); } } === 출력 결과 === 3 true banana => 2 apple => 3
Java
복사

3. 자주 쓰이는 메서드 정리

메서드
설명
put(K key, V value)
요소 추가
get(K key)
key에 해당하는 value 반환
containsKey(K key)
key 존재 여부
containsValue(V value)
value 존재 여부
remove(K key)
요소 삭제
keySet()
모든 key 반환
values()
모든 value 반환
entrySet()
key-value 쌍 전체 반환

4. 코딩테스트 활용 예시

예제 1: 문자열에서 문자 빈도수 세기

public static Map<Character, Integer> countChars(String s) { Map<Character, Integer> map = new HashMap<>(); for (char c : s.toCharArray()) { map.put(c, map.getOrDefault(c, 0) + 1); } return map; }
Java
복사

예제 2: 배열에서 가장 많이 등장한 숫자

public static int mostFrequent(int[] arr) { Map<Integer, Integer> map = new HashMap<>(); for (int num : arr) { map.put(num, map.getOrDefault(num, 0) + 1); } int maxCount = 0; int answer = -1; for (Map.Entry<Integer, Integer> entry : map.entrySet()) { if (entry.getValue() > maxCount) { maxCount = entry.getValue(); answer = entry.getKey(); } } return answer; }
Java
복사

5. 자주 쓰는 Map 코드 템플릿

1. 기본 카운팅

map.put(key, map.getOrDefault(key, 0) + 1);
Java
복사

2. Value 기준 정렬

List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet()); list.sort((a, b) -> b.getValue() - a.getValue()); // 내림차순 정렬
Java
복사

3. TreeMap으로 자동 정렬

Map<String, Integer> sortedMap = new TreeMap<>(map); // key 기준 오름차순 정렬
Java
복사