1. Map 자료 구조
Map은 키(Key)와 값(Value)의 쌍으로 데이터를 저장하는 자료구조이다. 배열이나 List처럼 순서(index)로 접근하는 것이 아니라, 고유한 키를 이용해서 값을 찾을 수 있다.
2. Map 인터페이스
import java.util.Map;
Java.util 패키지에 Map 인터페이스가 포함되어 있어서 import 하면 된다.
1. 객체 생성
Map<String, Integer> map = new Map<>(); // ❌ 불가능
Map<String, Integer> map1 = new HashMap<>(); // ✅ 가능
Map<String, Integer> map2 = new TreeMap<>(); // ✅ 가능
Map<String, Integer> map3 = new LinkedHashMap<>(); // ✅ 가능
- Java에서 제공하는 Map 인터페이스(Map<k, v>)는 객체를 직접 생성 ❌.
(추가 정보 확인 : https://kimyongjun0129.tistory.com/98) - 따라서 HashMap, TreeMap, LinkedHashMap 등의 구현체(클래스)를 사용해야 한다.
- 위 코드에서 처럼 작성하는 이유 :
- 코드의 유연성 증가 : 필요에 따라 다른 구현체로 쉽게 교체할 수 있다.
- 다형성(Polymorphism) 활용 : 구현체에 의지 ❌, 하나의 인터페이스로 여러 가지 구현체를 사용할 수 있다. ✅
import java.util.HashMap;
import java.util.TreeMap;
import java.util.LinkedHashMap;
다른 구현체(클래스)를 사용할 때는 import를 시켜줘야 한다.
2. 특징
Map<String, String> map = new HashMap<>();
map.put("바나나":"과일");
map.put("사과":"과일");
map.put("오렌지":"과일");
키-값(key-value) 형태로 저장: 키는 중복 ❌, 값은 중복 가능 ✅
3. Map 주요 메서드
메서드 | 설명 |
put(K key, V value) | 키-값 쌍 추가 (기존 키가 있으면 값 변경) |
get(K key) | 키에 해당하는 값 가져오기 (없으면 null 반환) |
containsKey(K key) | 특정 키가 존재하는지 확인 |
containsValue(V value) | 특정 값이 존재하는지 확인 |
remove(K key) | 특정 키 삭제 |
size() | Map에 저장된 키-값 쌍 개수 반환 |
keySet() | 모든 키를 Set 형태로 반환 |
values() | 모든 값을 Collection 형태로 반환 |
entrySet() | 모든 키-값 쌍을 Set<Map.Entry<K, V>> 형태로 반환 |
Map의 주요 메서드는 Map 인터페이스에 정의된 것들이라 모든 Map 구현체(HashMap, TreeMap, LinkedHashMap 등)에서 사용 가능 ✅
만약, 공통된 메서드들이 아닌 각 구현체(클래스)의 기능을 사용하고 싶다면
HashMap<String, Integer> map = new HashMap<>();
다음과 같이 인터페이스가 아닌 클래스를 이용하여 변수를 선언하고 할당하면 된다.
4. 사용 예제
더보기
import java.util.Map;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
// HashMap 생성: <키 타입, 값 타입>
HashMap<String, Integer> scores = new HashMap<>();
// 데이터 추가
scores.put("철수", 85);
scores.put("영희", 92);
scores.put("민수", 78);
// 값 가져오기
System.out.println(scores.get("영희")); // 92
// 키 존재 여부 확인
System.out.println(scores.containsKey("민수")); // true
// 값 수정
scores.put("민수", 88);
// 삭제
scores.remove("철수");
// 전체 출력
for (String name : scores.keySet()) {
System.out.println(name + "의 점수: " + scores.get(name));
}
}
}
'JAVA' 카테고리의 다른 글
[JAVA] JAVA란? (0) | 2025.04.11 |
---|---|
[내일 배움 캠프, JAVA 달리기 반] Lv.3 단어 맞추기 게임 (0) | 2025.04.04 |
[내일 배움 캠프, JAVA 달리기 반] 보너스 문제 : 가위 바위 보 (0) | 2025.04.03 |
[내일 배움 캠프, JAVA 달리기 반] (0) | 2025.04.02 |
[내일 배움 캠프, JAVA 달리기 반] Lv1. 랜덤 닉네임 생성기 (0) | 2025.04.01 |