Map 인터페이스

✒️ 2025-05-27 16:50 내용 수정


Map 인터페이스

key와 value의 한 쌍으로 이루어져 있고, 순서가 없는 key-value 저장 방식을 사용

MapClass.png

왜 key가 고유해야 하는가

  1. 식별성 문제 (고유성 문제)
    • key를 기반으로 탐색을 진행하는데, 중복된 key가 존재하면 어떤 것을 식별해야할 지 문제가 생긴다.
  2. 검색 성능상의 문제 (빠른 검색 철학 문제)
    • key-value(단일값)이 mapping되어 있음을 전제로 검색하는데, key가 단일값이 아닐 경우 검색을 추가적으로 진행해야 한다.
    • 시간 복잡성이 O(1) 또는 O(log n)이 아닌 O(n)으로 증가함
  3. API 단순화 및 예측 가능성
    • 하나의 key엔 하나의 value가 저장되어 있어 사용자가 이를 전제로 코드를 작성할 수 있다.

인터페이스 메서드

Map 인터페이스 메서드 설명
void put(K key, V value) key에 대응하는 value를 저장
V get(K key) key에 대응하는 value를 반환
boolean containsKey(K key) key의 존재 여부 검색
boolean containsValue(V value) value의 존재 여부 검색
V remove(K key) key에 대응하는 매핑 제거
boolean remove(K key, V value) key에 대응하는 value를 제거
Set<E> keySet() 모든 key를 Set 컬렉션에 저장하여 반환
(Set은 중복되는 데이터를 못 담으니까 중복 제거)
Set<Map.Entry<K, V>> entrySet() 모든 Map.Entry 객체를 Set에 담아 반환
(Set은 해시코드와 값을 비교하므로 단일 key에 대응되는 value를 저장 가능)
int size() 맵의 매핑 총 개수를 반환
boolean isEmpty() 해당 맵이 비었는지 확인
V replace(K key, V value) 해당 맵에서 전달된 키에 대응하는 값을 특정 값으로 대체
getOrDefault(K key, V value) 해당 맵에서 전달된 키에 대응되는 값을 찾고, 키가 존재한다면 키의 값을 반환
만약 키가 맵에 존재하지 않는다면 defaulValue로 지정한 값을 반환

Map 인터페이스 구현체

Map 인터페이스 구현체 비교

HashMap TreeMap
저장형태 key-value key-value
내부 구조 Hash Table Red-Black Tree
정렬/순서 X key로 정렬
연산 성능 O(1) O(log n)
null 허용 key : 1개 허용
value : 여러 개 허용
key : X

1. HashMap

Map<데이터타입, 데이터타입> 인스턴스이름 = new HashMap<>();

Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 1);