Map

sungs·2025년 6월 19일

자바

목록 보기
16/95

🗺️ Map

자바에서 Map은 Key와 Value 쌍으로 데이터를 저장하는 자료구조. 배열이나 리스트처럼 순서대로 저장되지 않고, Key를 통해 Value에 접근할 수 있다.
가장 자주 쓰이는 Map 구현체로는 HashMap, TreeMap, LinkedHashMap 등이 있다.

✅ Map 특징

  • Key는 중복 불가능, Value는 중복 가능

  • 순서를 보장하지 않음 (HashMap 기준)

  • Key를 기반으로 데이터를 빠르게 조회

🛠 주요 메서드

메서드설명
put(K key, V value)Map에 키-값 쌍을 추가
get(Object key)키에 해당하는 값 반환
containsKey(Object key)해당 키가 존재하는지 확인
containsValue(Object value)해당 값이 존재하는지 확인
remove(Object key)해당 키와 관련된 키-값 쌍 제거
keySet()모든 키를 Set으로 반환
values()모든 값들을 Collection으로 반환
entrySet()키-값 쌍을 Set<Map.Entry>로 반환
clear()모든 항목 제거
isEmpty()비어있는지 확인
size()크기 확인

🔍 자주 사용하는 Map 구현체

1. HashMap

  • 순서 보장 X

  • 가장 빠른 성능

  • 대부분의 경우 사용

Map<String, Integer> map = new HashMap<>();
map.put("apple", 3);
map.put("banana", 5);
System.out.println(map.get("apple")); // 3

2. LinkedHashMap

  • 입력 순서 유지

  • HashMap보다 약간 느리지만 순서가 필요할 때 유용

Map<String, Integer> map = new LinkedHashMap<>();
map.put("one", 1);
map.put("two", 2);
map.put("three", 3);
System.out.println(map); // {one=1, two=2, three=3}

3. TreeMap

  • Key 기준으로 정렬 (오름차순)

  • NavigableMap, SortedMap 인터페이스 구현

Map<String, Integer> map = new TreeMap<>();
map.put("banana", 2);
map.put("apple", 5);
map.put("cherry", 3);
System.out.println(map); // {apple=5, banana=2, cherry=3}

🧪 Map 순회 예제

for (String key : map.keySet()) {
    System.out.println("key: " + key + ", value: " + map.get(key));
}

// 또는 entrySet 사용
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " = " + entry.getValue());
}

⚠️ 주의할 점

  • HashMap은 null key 1개, null value 여러 개 허용

  • TreeMap은 null key 허용 ❌ (정렬 시 NullPointerException 발생)

  • 멀티스레드 환경에서는 ConcurrentHashMap 사용 권장

profile
앱 개발 공부 중

0개의 댓글