대응관계를 쉽게 표현할 수 있게 해주는 자료형이다.
맵은 다른 언어에도 있는 자료형으로, associative array 또는 hash 라고도 불린다.
맵은 사전과 비슷한데, 예를 들어 People 이란 단어에는 사람, baseball 이라는 단어에는 야구라는 뜻이 부합되듯이 맵은 키(key)와 값(value)를 한 쌍으로 갖는 자료형이다.
| 키(key) | 값(value) |
|---|---|
| people | 사람 |
| baseball | 야구 |
즉, Key 값과 Value를 저장하는 데이터 구조를 표현하는 인터페이스이다.
맵은 key-value 연관 매핑에 사용하기에 적합하다. 키값으로 조회하거나, 검색하거나, 업데이트 할 때 유용하게 사용될 수 있다.
public class Main {
public static void main(String[] args) {
Map<String, Integer> numbers = new HashMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("Numbers:" + 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 인터페이스에는 여러 구현체가 있다.
해쉬맵은 Map 인터페이스를 *구현한 클래스로. 해시 테이블을 사용해서 키와 값을 저장하는 구조를 제공한다.*
그래서 이게 어떻게 유용하다는 건가?
예를 들어 사물함을 사용하고 있다고 가정해보자.각 사물함에는 고유한 번호가 있고, 그 번호에 따라 소지품을 저장할 수 있다. 이 때, 사물함 번호는 key가 되고 소지품은 value가 되는 것이다.
그러면 해쉬맵에서 키가 고유 식별자로 작동한다는 것은 무엇을 의미하는가? 사물함은 중복된 번호를 가질 수 없다. 이 특성 덕에, 각 사물함을 더 빠르게 찾을 수 있는 것이다.
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Alice", 24);
map.put("Mike", 26);
map.put("David", 28);
// 키를 이용해 값 얻기
int aliceAge = map.get("Alice");
System.out.println(aliceAge);
// 맵 크기 확인
System.out.println(map.size());
// 맵 모든 요소 출력
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
// 요소 삭제
map.remove("Mike");
for (Map.Entry<String, Integer> entry2 : map.entrySet()) {
System.out.println(entry2.getKey() + ":" + entry2.getValue());
}
}
}
key, value 를 사용해서 데이터를 저장하는 자바의 데이터 구조이다.그래서, 내가 Map 과 HaspMap을 공부한 이유
언제 사용하는가? Map과 HaspMap을 사용하기에 적절한 상황은 언제인가?
검색과 수정이 빈번하게 발생하고, 순서가 중요하지 않은 경우에 사용된다.
예를 들어, 사용자의 사용자ID와 사용자 정보를 매핑해야 하는 경우 ⇒