Map 컬렉션은 키-값 쌍(key-value pair)으로 데이터를 저장하는 자바 컬렉션입니다. Map은 다른 컬렉션과는 다르게 키를 기준으로 데이터에 접근할 수 있으며, 중복된 키를 허용하지 않지만 값은 중복이 가능하다는 특징을 가집니다. 자바에서 Map 인터페이스를 구현하는 대표적인 클래스에는 HashMap, TreeMap, LinkedHashMap, Hashtable 등이 있습니다.
주요 특징
- (key, value)로 이루어진 엔트리 객체를 저장한다.
- key는 중복 허용 되지 않음
- key를 이용해서 저장 한 값 가져올 수 있음.
- 하위 HashMap , HashTable 클래스를 구현 가능
- HashTable은 스레드 동기화를 지원, HashMap 은 지원 X
다음은 Map컬렉션에서 사용하는 인터페이스 메소드이다.
메소드 | 설명 |
---|---|
put(K key, V value) | 지정된 키와 값을 Map 에 추가합니다. 이미 존재하는 키면 값을 덮어씁니다. |
get(Object key) | 지정된 키에 매핑된 값을 반환합니다. 키가 없으면 null 을 반환합니다. |
remove(Object key) | 지정된 키에 매핑된 키-값 쌍을 제거합니다. |
containsKey(Object key) | Map 에 지정된 키가 포함되어 있는지 여부를 반환합니다. |
containsValue(Object value) | Map 에 지정된 값이 포함되어 있는지 여부를 반환합니다. |
keySet() | Map 의 모든 키를 Set 으로 반환합니다. |
values() | Map 의 모든 값을 Collection 으로 반환합니다. |
entrySet() | Map 의 모든 키-값 쌍을 Set 으로 반환합니다. |
size() | Map 에 저장된 키-값 쌍의 개수를 반환합니다. |
clear() | Map 의 모든 키-값 쌍을 제거합니다. |
😊HashMap
HashMap은 Map 계열에서 가장 많이 사용되는 컬렉션. HashMap은 객체를 Key, value로 저장하여, key를 통해 value 값을 얻는다.
import java.util.HashMap;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
// HashMap 객체 생성
Map<String, Integer> map = new HashMap<String, Integer>();
// 데이터 추가 (put 메소드 사용)
map.put("Alice", 85);
map.put("Bob", 92);
map.put("Charlie", 78);
// 값 가져오기 (get 메소드 사용)
System.out.println("Alice의 점수: " + map.get("Alice"));
System.out.println("Bob의 점수: " + map.get("Bob"));
// 특정 키가 존재하는지 확인 (containsKey 메소드 사용)
if (map.containsKey("Charlie")) {
System.out.println("Charlie의 점수는 " + map.get("Charlie") + "점입니다.");
} else {
System.out.println("Charlie의 점수 정보가 없습니다.");
}
// 모든 키 가져오기 (keySet 메소드 사용)
System.out.println("\n전체 학생 목록 (keySet 사용):");
for (String key : map.keySet()) {
System.out.println(key + "의 점수: " + map.get(key));
}
// 모든 키-값 쌍 가져오기 (entrySet 메소드 사용)
System.out.println("\n전체 학생 점수 목록 (entrySet 사용):");
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + "의 점수: " + entry.getValue());
}
// 값 수정
map.put("Alice", 90); // Alice의 점수를 90으로 업데이트
System.out.println("\n업데이트된 Alice의 점수: " + map.get("Alice"));
// 데이터 삭제 (remove 메소드 사용)
map.remove("Bob");
System.out.println("\nBob의 점수 삭제 후 전체 목록:");
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + "의 점수: " + entry.getValue());
}
// HashMap 크기 확인 (size 메소드 사용)
System.out.println("\n총 학생 수: " + map.size());
}
}
##실행결과##
Alice의 점수: 85
Bob의 점수: 92
Charlie의 점수는 78점입니다.
전체 학생 목록 (keySet 사용):
Alice의 점수: 85
Bob의 점수: 92
Charlie의 점수: 78
전체 학생 점수 목록 (entrySet 사용):
Alice의 점수: 85
Bob의 점수: 92
Charlie의 점수: 78
업데이트된 Alice의 점수: 90
Bob의 점수 삭제 후 전체 목록:
Alice의 점수: 90
Charlie의 점수: 78
총 학생 수: 2