JAVA

Java Map(맵)

도원좀비 2025. 3. 12. 21:13

자바에서 Map(맵)이란?

  1. Map키-값(Key-Value) 쌍을 저장하는 데이터 구조
  2. 자바에서 Map은 Collection 인터페이스의 일부가 아니라 별도로 존재하는 인터페이스
  3. 중복된 키를 허용하지 않고 각 키는 하나의 값만을 가질 수 있다.

주요 Map 구현 클래스

1️⃣ HashMap

 

  • 가장 많이 사용되는 Map 구현체
  • 키(Key) 값으로 hashCode()를 사용하여 저장하므로 빠른 검색 속도를 가짐
  • 순서를 보장하지 않는다.
  • null 키와 null 값을 허용
더보기
import java.util.HashMap;
import java.util.Map;

public class HashMapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 10);
        map.put("Banana", 5);
        map.put("Orange", 7);

        System.out.println("Apple 개수: " + map.get("Apple"));
        System.out.println("전체 Map: " + map);
    }
}

 


2️⃣ LinkedHashMap

 

  • 입력 순서를 유지하는 Map
  • 내부적으로 이중 연결 리스트(Doubly Linked List) 를 사용하여 순서를 유지
  • HashMap보다 약간 성능이 떨어질 수 있다.
더보기
import java.util.LinkedHashMap;
import java.util.Map;

public class LinkedHashMapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new LinkedHashMap<>();
        map.put("Banana", 5);
        map.put("Apple", 10);
        map.put("Orange", 7);

        System.out.println("입력 순서 유지: " + map);
    }
}

 


3️⃣ TreeMap

 

  • 키(Key)의 정렬 순서를 유지하는 Map
  • 키가 Comparable을 구현했거나 Comparator를 제공해야 함
  • 내부적으로 Red-Black Tree를 사용하여 자동 정렬됨
  • HashMap보다 삽입, 삭제, 조회 성능이 느림

 

더보기
import java.util.Map;
import java.util.TreeMap;

public class TreeMapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new TreeMap<>();
        map.put("Orange", 7);
        map.put("Apple", 10);
        map.put("Banana", 5);

        System.out.println("자동 정렬된 Map: " + map);
    }
}

 


Map의 주요 메서드

메서드 설명
put(K key, V value) 키-값을 추가
get(Object key) 키에 해당하는 값을 반환
remove(Object key) 특정 키를 삭제
containsKey(Object key) 키가 존재하는지 확인
containsValue(Object value) 값이 존재하는지 확인
size() 요소 개수를 반환
isEmpty() 비어있는지 확인
clear() 모든 요소 삭제

Map의 반복 (Entry Set 사용)

Map을 반복할 때는 entrySet()을 활용하는 것이 가장 일반적입니다.

더보기
import java.util.HashMap;
import java.util.Map;

public class MapIterationExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 10);
        map.put("Banana", 5);
        map.put("Orange", 7);

        // 1. entrySet()을 사용한 반복
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }

        // 2. keySet()을 사용한 반복
        for (String key : map.keySet()) {
            System.out.println(key + " : " + map.get(key));
        }
    }
}

Map 상황별 정리

종류 특징 사용 사례
HashMap 빠른 성능, 순서 유지 X 일반적인 Key-Value 저장
LinkedHashMap 입력 순서 유지 순서를 보장하면서 빠르게 검색
TreeMap 키 기준 정렬 자동 정렬이 필요한 경우
Hashtable 동기화 지원 (멀티스레드) 멀티스레드 환경에서 안전하게 사용

 

정리

 

  1. Map은 키-값 형태로 데이터를 저장하며, 키는 중복되지 않음
  2. 가장 많이 쓰는 HashMap은 빠른 검색 속도를 가짐
  3. LinkedHashMap은 입력 순서를 유지하고, TreeMap은 자동 정렬됨
  4. Hashtable은 멀티스레드 환경에서 사용되지만 요즘은 ConcurrentHashMap을 더 많이 씀

 

'JAVA' 카테고리의 다른 글

가상 쓰레드 (Virtual Threads)  (0) 2025.03.12
CompletableFuture (비동기 처리)  (1) 2025.03.12
Executor 프레임워크  (0) 2025.03.12
쓰레드 동기화 (Synchronization)  (3) 2025.03.11
쓰레드(Thread)  (0) 2025.03.11