Map
인터페이스와 HashMap
클래스Map
인터페이스는 자바 컬렉션 프레임워크에서 키(key)와 값(value)의 쌍으로 데이터를 저장하는 자료구조를 정의하는 인터페이스입니다. HashMap
은 Map
인터페이스를 구현한 대표적인 클래스 중 하나로, 데이터를 해시 테이블 방식으로 관리합니다.
HashMap
의 특징:HashMap
은 요소가 삽입된 순서를 보장하지 않습니다.HashMap
은 O(1)의 시간 복잡도로 검색, 삽입, 삭제를 처리할 수 있습니다.put(K key, V value)
: 주어진 키와 값을 HashMap
에 저장합니다. 만약 같은 키가 이미 존재하면, 새로운 값으로 덮어씁니다.get(Object key)
: 주어진 키에 해당하는 값을 반환합니다. 키가 존재하지 않으면 null을 반환합니다.remove(Object key)
: 주어진 키에 해당하는 값을 삭제합니다.containsKey(Object key)
: 주어진 키가 존재하는지 여부를 확인합니다. 존재하면 true
, 없으면 false
를 반환합니다.containsValue(Object value)
: 주어진 값이 존재하는지 여부를 확인합니다. 값이 존재하면 true
, 없으면 false
를 반환합니다.keySet()
: HashMap
에 존재하는 모든 키를 Set
형태로 반환합니다.values()
: HashMap
에 존재하는 모든 값을 Collection
형태로 반환합니다.수업코드
package com.util1;
import java.util.Collection;
import java.util.HashMap;
import java.util.Set;
public class HashMapEx01 {
public static void main(String[] args) {
// HashMap 객체 생성: 키와 값을 모두 String 타입으로 설정
HashMap<String, String> hm1 = new HashMap<>();
// HashMap에 키-값 쌍 추가 (put 메서드 사용)
// "a"라는 키에 "홍길동"이라는 값 저장
hm1.put("a", "홍길동");
// "b"라는 키에 "박문수"라는 값 저장
hm1.put("b", "박문수");
// "c"라는 키에 "임꺽정"이라는 값 저장
hm1.put("c", "임꺽정");
// HashMap의 전체 내용 출력
// 출력 형식: {키1=값1, 키2=값2, ...}
System.out.println(hm1); // {a=홍길동, b=박문수, c=임꺽정}
// HashMap의 크기 (저장된 키-값 쌍의 개수) 출력
System.out.println(hm1.size()); // 3
// 새로운 키-값 쌍 추가
// "d"라는 키에 "장길산"이라는 값을 저장
hm1.put("d", "장길산");
System.out.println(hm1); // {a=홍길동, b=박문수, c=임꺽정, d=장길산}
// 기존 키 "c"에 새로운 값 "장길산" 저장 (덮어쓰기)
// 기존에 저장된 "c"의 값이 "임꺽정"에서 "장길산"으로 변경됨
hm1.put("c", "장길산");
System.out.println(hm1); // {a=홍길동, b=박문수, c=장길산, d=장길산}
// 특정 키에 대한 값 가져오기 (get 메서드 사용)
// "a"라는 키에 해당하는 값을 출력 (홍길동)
System.out.println(hm1.get("a")); // 홍길동
// "b"라는 키에 해당하는 값을 출력 (박문수)
System.out.println(hm1.get("b")); // 박문수
// HashMap에 저장된 모든 키를 가져오기 (keySet 메서드 사용)
Set<String> keys = hm1.keySet();
System.out.println(keys); // [a, b, c, d]
// 반복문을 사용해 모든 키에 해당하는 값을 출력
for (String key : keys) {
// 각 키에 해당하는 값을 출력
System.out.println(hm1.get(key)); // 홍길동, 박문수, 장길산, 장길산
}
// HashMap에 저장된 모든 값 가져오기 (values 메서드 사용)
Collection<String> values = hm1.values();
// 반복문을 사용해 모든 값을 출력
for (String value : values) {
System.out.println(value); // 홍길동, 박문수, 장길산, 장길산
}
}
}
package com.util1;
import java.util.Collection;
import java.util.HashMap;
import java.util.Set;
public class HashMapEx02 {
public static void main(String[] args) {
// 사용자 정의 클래스도 Map에 지정 가능
// 1. Student 객체 생성 (학번과 이름을 인자로 전달)
Student s1 = new Student("1001", "박문수");
Student s2 = new Student("1002", "홍길동");
Student s3 = new Student("1003", "임꺽정");
// 2. HashMap 생성 (키는 String 타입, 값은 Student 객체 타입)
HashMap<String, Student> map = new HashMap<>();
// 3. HashMap에 키-값 쌍으로 Student 객체 추가
map.put("a", s1); // "a" 키에 박문수 객체 추가
map.put("b", s2); // "b" 키에 홍길동 객체 추가
map.put("c", s3); // "c" 키에 임꺽정 객체 추가
// 4. HashMap 전체 출력 (키-값 쌍으로 출력)
// 출력 형식: {키1=값1, 키2=값2, ...}
System.out.println(map); // {a=박문수, b=홍길동, c=임꺽정}
// [실습] HashMap의 키셋과 값컬렉션을 추출하고 반복문으로 출력해보세요.
// HashMap의 모든 키를 가져오기 (keySet 메서드 사용)
Set<String> keys = map.keySet();
// 각 키를 출력
for (String key : keys) {
System.out.println(key); // "a", "b", "c" 출력
}
// HashMap에 저장된 모든 값을 가져오기 (values 메서드 사용)
Collection<Student> values = map.values();
// 각 값을 출력 (toString 메서드를 통해 Student 객체 출력)
for (Student value : values) {
System.out.println(value); // 박문수, 홍길동, 임꺽정 출력
}
}
}