Java Map 인터페이스 완벽 가이드: 구조, 구현체, 핵심 메서드
Java Map 인터페이스
Java의 Map 인터페이스, 구조, 구현체, 핵심 메서드, 실전 활용법을 심층 분석합니다.
Map 인터페이스는 java.util 패키지의 일부로, Java 컬렉션 프레임워크에서 키/값 쌍 컬렉션의 근간을 제공합니다.
Map 동작 원리
Java에서 Map은 고유한 키/값 쌍으로 데이터를 저장합니다. 각 키는 고유하며 단일 값에 매핑되어 중복 키가 존재하지 않습니다.
키를 참조하여 값을 검색하거나 업데이트할 수 있습니다.
특히 Map 인터페이스는 세 가지 별도 컬렉션을 관리합니다:
- 모든 키의 집합
- 모든 값의 집합
- 모든 키/값 연관(엔트리)의 집합
이 집합들을 통해 키, 값, 엔트리를 독립적으로 접근할 수 있습니다.
Map을 구현하는 클래스들
Map은 인터페이스이므로 직접 인스턴스화할 수 없습니다. 대신 java.util 패키지에 있는 다음 구체 클래스 중 하나를 사용하세요:
HashMap
EnumMap
LinkedHashMap
WeakHashMap
TreeMap
Map을 확장하는 서브인터페이스
Map 인터페이스는 정렬 또는 동시성 보장을 추가하는 여러 특화 서브인터페이스로 확장됩니다:
SortedMap – 키로 엔트리 정렬 유지
NavigableMap – SortedMap을 탐색 메서드로 확장
ConcurrentMap – 스레드 안전 연산 제공
코드에서 Map 사용하기
먼저 인터페이스를 임포트하세요:
import java.util.Map;
구체 인스턴스 생성. 예: HashMap 사용:
// HashMap을 사용한 Map 구현
Map<Key, Value> numbers = new HashMap<>();
Key는 고유 식별자, Value는 연관된 데이터를 나타냅니다.
Map 핵심 메서드
Collection 인터페이스 메서드 외에 Map은 특화 연산을 제공합니다:
- put(K, V) – 키/값 쌍 추가, 키가 이미 있으면 값 교체
- putAll() – 다른 맵의 엔트리를 현재 맵에 병합
- putIfAbsent(K, V) – 키가 매핑되지 않았을 때만 삽입
- get(K) – 주어진 키의 값 반환, 없으면
null
- getOrDefault(K, defaultValue) – 매핑된 값 또는 지정된 기본값 반환
- containsKey(K) – 키 존재 여부 확인
- containsValue(V) – 값 존재 여부 확인
- replace(K, V) – 키의 값 업데이트
- replace(K, oldValue, newValue) – 현재 값이 일치할 때만 조건부 교체
- remove(K) – 키의 엔트리 삭제
- remove(K, V) – 키가 지정된 값에 매핑될 때만 엔트리 삭제
- keySet() – 모든 키의
Set 반환
- values() – 모든 값의
Collection 반환
- entrySet() – 모든 키/값 매핑의
Set 반환
Map 구현체 예제
1. HashMap 예제
import java.util.Map;
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// HashMap을 사용한 맵 생성
Map<String, Integer> numbers = new HashMap<>();
// 맵에 요소 삽입
numbers.put("One", 1);
numbers.put("Two", 2);
System.out.println("Map: " + numbers);
// 맵의 키 접근
System.out.println("Keys: " + numbers.keySet());
// 맵의 값 접근
System.out.println("Values: " + numbers.values());
// 맵의 엔트리 접근
System.out.println("Entries: " + numbers.entrySet());
// 맵에서 요소 제거
int value = numbers.remove("Two");
System.out.println("Removed Value: " + value);
}
}
출력
Map: {One=1, Two=2} Keys: [One, Two] Values: [1, 2] Entries: [One=1, Two=2] Removed Value: 2
HashMap 자세한 내용은 Java HashMap 참조.
2. TreeMap 예제
import java.util.Map;
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
// TreeMap을 사용한 Map 생성
Map<String, Integer> values = new TreeMap<>();
// 맵에 요소 삽입
values.put("Second", 2);
values.put("First", 1);
System.out.println("Map using TreeMap: " + values);
// 값 교체
values.replace("First", 11);
values.replace("Second", 22);
System.out.println("New Map: " + values);
// 맵에서 요소 제거
int removedValue = values.remove("First");
System.out.println("Removed Value: " + removedValue);
}
}
출력
Map using TreeMap: {First=1, Second=2} New Map: {First=11, Second=22} Removed Value: 11
TreeMap 자세한 내용은 Java TreeMap 참조.