1. Map 주요 특징
- 키-값 저장 : Map은 키(key)와 값(value)의 쌍으로 데이터를 저장한다. 각 키는 고유해야 하며, 하나의 값에만 매핑된다.
- 중복 키 불가 : Map은 각 키가 고유해야 한다. 따라서 동일한 키를 두 번 이상 추가할 수 없다. 키의 유일성은 Map 내에서 보장된다.
- 순서 보장하지 않음 : Map은 키-값 쌍을 저장하는데 순서를 유지하지 않는다. 따라서 Map에 저장된 순서와 데이터를 순회할 때의 순서는 일치하지 않을 수 있다.
2. Map 주요 기능 및 메서드
- 키-값 저장 : Map은 키와 값의 쌍을 저장한다.
- 메서드 : put(key, value)
- 설명 : 지정된 키와 값을 매핑하여 Map에 저장한다.
- 반환값 : 이전에 키에 매핑되어 있던 값, 없으면 null을 반환한다.
- 메서드 : put(key, value)
- 데이터 검색 : 주어진 키를 사용하여 매핑된 값을 검색한다.
- 메서드 : get(key)
- 설명 : 지정된 키에 매핑되어 있는 값을 반환한다.
- 반환값 : 지정된 키에 매핑되어 있는 값, 없으면 null을 반환한다.
- 메서드 : get(key)
- 데이터 추가 및 갱신 : 새로운 키-값 쌍을 추가하거나, 기존 키에 매핑된 값을 갱신한다.
- 메서드 : put(key, value)
- 설명 : 지정된 키와 값을 매핑하여 Map에 저장한다. 이미 존재하는 키인 경우 해당 키에 새로운 값을 덮어쓴다.
- 반환값 : 이전에 키에 매핑되어 있던 값, 없으면 null을 반환한다.
- 메서드 : put(key, value)
- 데이터 삭제 : 특정 키에 해당하는 값을 삭제한다.
- 메서드 : remove(key)
- 설명 : 지정된 키에 매핑되어 있는 값을 제거한다.
- 반환값 : 지정된 키에 매핑되어 있던 값, 없으면 null을 반환한다.
- 메서드 : remove(key)
- 크기 확인 : Map의 크기(키-값 쌍의 수)를 확인한다.
- 메서드 : size()
- 설명 : Map에 포함된 키-값 쌍의 수를 반환한다.
- 반환값 : Map에 포함된 키-값 쌍의 수를 반환한다.
- 메서드 : size()
package collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class HashMapTest {
public static void main(String[] args) {
// 계층 구조 확인
Map<String, String> map;
// Map 계열 자료 구조 객체 선언과 동시에 초기화
Map<String, String> books = new HashMap<>();
// C R U D
// 데이터 추가
books.put("해리포터", "J.K.롤링");
books.put("반지의 제왕", "J.R.R.톨킨");
books.put("1984", "조지오웰");
// 데이터 조회 : 특정 키 값으로 value 를 읽어 보기
String value1 = books.get("해리포터");
System.out.println("value1 : " + value1);
String value2 = books.get("해리포터22");
System.out.println("value2 : " + value2); // 없는 키 값을 요청하면 null 값을 반환한다.
// 데이터 수정하기
books.put("1984", "업데이트 됨");
System.out.println(books.get("1984"));
// 데이터 삭제하기
books.remove("반지의 제왕");
// size() 확인
System.out.println("Map size() 확인 : " + books.size());
// 키 값을 확인하는 메서드 제공 됨
System.out.println("keySet() : " + books.keySet());
System.out.println("-----------------------");
// 향상된 for 구문
for (String key : books.keySet()) {
System.out.println("key 값 확인 : " + key);
System.out.println("value 값 확인(key 활용) : " + books.get(key));
}
// Iterator 를 사용해서 순회 시켜 보자.
Iterator<Map.Entry<String, String>> iter = books.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, String> entry = iter.next();
System.out.println("key : " + entry.getKey() + ", value : " + entry.getValue());
}
System.out.println("Map 의 크기를 반환 : " + books.size());
// 전체 요소 삭제
books.clear();
}
}
package collections;
import java.util.HashMap;
import java.util.Map;
public class UserMapAddSystem {
private Map<String, User> users;
public UserMapAddSystem() {
users = new HashMap<>();
}
// users 접근해서 데이터 추가하는 기능 만들어 보기
public void addUser(String name, String email) {
// 1. map 자료 구조에 넣어야 한다.
// 2. 키 값을 명시하고 value 에는 User object 들어 가야 한다.
User u1 = new User(name, email);
users.put(name, new User(name, email));
}
// users 에 접근해서 전체 데이터를 출력하는 기능을 만들어 보자.
public void printAllUser() {
for (User u : users.values()) {
System.out.println(u.toString());
}
}
// 메인 함수
public static void main(String[] args) {
UserMapAddSystem userMapAddSystem = new UserMapAddSystem();
userMapAddSystem.addUser("홍길동", "a@naver.com");
userMapAddSystem.addUser("이순신", "b@naver.com");
userMapAddSystem.printAllUser();
}
} // end of class
class User {
String name;
String email;
public User(String name, String email) {
this.name = name;
this.email = email;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", email='" + email + '\'' +
'}';
}
}
'JAVA' 카테고리의 다른 글
제네릭(Generic) (0) | 2025.05.08 |
---|---|
버블버블 게임 6단계 (바닥, 층 감지하기) (0) | 2025.05.07 |
컬렉션 프레임워크 - Set 계열 인터페이스 (0) | 2025.05.07 |
얕은 복사(Shallow Copy) (0) | 2025.05.02 |
컬렉션 프레임워크 - List 계열 인터페이스 (0) | 2025.05.02 |