Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용합니다
Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가집니다.
여기서 키(key)란 실질적인 값(value)을 찾기 위한 이름의 역할을 합니다.
객체 추가
-V put(K key, V value) : 주어진 키로 값을 저장합니다. 새로운 키일 경우 null을 리턴하고,동일한 키가 있을경우 값을 대체하고 이전 값을 리턴합니다.
객체 검색
-boolean containsKey(Object key) : 주어진 키가 있는가? 여부를 확인
-boolean containsValue(Object value) : 주어진 값이 있는가? 여부를 확인
-Set<Map.Entry<K,V>> entrySet() : 키와 값을 쌍으로 구성된 모든 Map.Entry객체를 Set에 담아서 리턴합니다.
-V get(Object key) : 주어진 키가 있는 값을 리턴합니다.
-boolean isEmpty() : 컬렉션이 비어있는가? 여부를 확인
-Set keySet() : 모든 키를 Set에 담아서 리턴한다.
-int size() : 저장된 키의 총 수를 리턴합니다.
-Collecion values() : 저장된 모든 값을 Collection에 담아서 리턴한다.
객체 삭제
-void clear() : 모든 Map.Entry(키와 값)을 삭제합니다.
-V remove(Object key) : 주어진 키와 일치하는 Map.Entry를 삭제하고 값을 리턴합니다.
HashMap 클래스는 Map 컬렉션 클래스에서 가장 많이 사용되는 클래스 중에 하나입니다.
다음 예제는 여러 HashMap 메서드를 이용하여 맵을 생성하고 조작하는 예제입니다.
package 컬렉션프레임워크;
import java.util.*;
public class HashMapExample1 {
public static void main(String[] args) {
HashMap<String, Integer> hm = new HashMap<String, Integer>();
// put() 메소드를 이용한 요소의 저장
hm.put("삼십", 30);
hm.put("십", 10);
hm.put("사십", 40);
hm.put("이십", 20);
// Enhanced for 문과 get() 메소드를 이용한 요소의 출력
System.out.println("맵에 저장된 키들의 집합 : " + hm.keySet());
System.out.println();
for (String key : hm.keySet()) {
System.out.println(String.format("키 : %s, 값 : %s", key, hm.get(key)));
}
System.out.println();
// remove() 메소드를 이용한 요소의 제거
hm.remove("사십");
// iterator() 메소드와 get() 메소드를 이용한 요소의 출력
Iterator<String> keys = hm.keySet().iterator();
while (keys.hasNext()) {
String key = keys.next();
System.out.println(String.format("키 : %s, 값 : %s", key, hm.get(key)));
}
System.out.println();
// replace() 메소드를 이용한 요소의 수정
hm.replace("이십", 200);
for (String key : hm.keySet()) {
System.out.println(String.format("키 : %s, 값 : %s", key, hm.get(key)));
}
System.out.println();
// size() 메소드를 이용한 요소의 총 개수
System.out.println("맵의 크기 : " + hm.size());
}
}
Hashtable 클래스는 JDK 1.0부터 사용해 온 HashMap 클래스와 같은 동작을 하는 클래스입니다.
따라서 Hashtable 클래스에서 사용할 수 있는 메소드는 HashMap 클래스에서 사용할 수 있는 메소드와 거의 같습니다.
package 컬렉션프레임워크;
import java.util.*;
public class HashTableExample {
public static void main(String[] args) {
Map<String,String> map = new Hashtable<>();
map.put("spring","12");
map.put("summer","123");
map.put("fall","1234");
map.put("winter","12345");
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("아이디와 비밀번호를 입력해주세요.");
System.out.print("아이디: ");
String id =sc.next(); //키보드로 입력한 아이디를 얻음
System.out.println("비밀번호: ");
String password =sc.next();
System.out.println();
if(map.containsKey(id)){
if(map.get(id).equals(password)){
System.out.println("로그인되었습니다.");
break;
}else{
System.out.println("비밀번호가 일치하지 않습니다.");
}
}else{
System.out.println("입력하신 아이디가 존재하지 않습니다.");
}
}
}
}