본문 바로가기

[TIL] 컬렉션 - java.util.Map<K, V> 인터페이스 & 구현클래스

인포꿀팁 발행일 : 2020-09-07

java.util.Map<K,V>인터페이스 

  • 키(KEY)를 값(Value)에 매핑하는 객체
  • 동일한 키를 두개 이상 등록할수 없다. = 키는 중복 x
  • 각 키에 하나의 값(value)만 매핑 된다.
  • 구현 클래스 : HashMap, TreeMap(키를 기준으로 정렬 저장), LinkedHashMap (입력한 순서대로 저장), Properties(파일 입출력 지원 : 키와 값을 string으로 제한)
  • 구현 클래스 계층도 :

 

주요 메소드

V put(K key, V value) key 와 value로 주어진 값을 저장한다.
V replace(K key, V value) 해당 맵에서 전달된 키에 대응하는값을 특정 값으로 변경한다.
boolean replace(K key, V  oldValue, V newValue) 해당 맵에서 특정 값에 대응하는 전달된 키의 값을 새로운 값으로 변경
int size() 맵 내의 키오 값의 매핑의 수를 돌려준다
V get(Obeject key) 해당 맵에서 전달된 키에 대응하는 값을 반환
boolean containKey(Object key) 지정된 키의 매핑이 맵에 포함되어 있는 경우 true 리턴
boolean containValue(Object value) 맵의 지정된 값에 1개이상에 키를 매핑하는 경우 true 리턴
boolean isEmpty() 맵이 키와 값의 매핑을 보관유지 하지 않는 경우 true 리턴
Set<K> keySet() 이 맵에 포함되는 키의 set 객체를 리턴
Set<Map.Entry <K,V>> entrySet() 이 맵에 포함되는 키의 set 객체를 리턴
boolean equals(Object o) 지정된 오브젝트가 이 맵과 동일한지 여부 비교
void clear() 맵으로 부터 매핑을 모두 삭제한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package ex0814;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
 
public class Map_Ex1 {
    public static void main(String[] args) {
        /*
         * Map<K,V> : 키와 값
         * 키는 중복을 허용하지 않는다.
         * 기본적으로 입력순서를 유지하지 않는다.(Linked를 사용하면 순서o)
         * Iterator가 존재하지 않는다. : 반복자가 없고 향상된 for문 사용 불가
         * 구현클래스 : Hashtable(동시성 지원), HashMap(동시성 지원x)
         * 메소드 : 
         * 데이터 추가 -> put(키, 값)
         * 데이터 반환 -> get(키) = > 값 반환
         * 데이터 삭제 -> remove(키)
         */
        Map<String, Integer> map = new HashMap<>();
        // 데이터 추가 : put
        // 키는 중복을 허용하지 않기때문에 키가 같으면 값을 덮는다.
        map.put("영헌"1000);
        map.put("주영"10);
        map.put("혜리"15);
        map.put("성원"30);
        map.put("쌍용"5);
        map.put("자바"100);
        map.put("풀스텍"5);
        map.put("영헌"100); 
        map.remove("쌍용");
        System.out.println(map);
        Integer a = map.get("영헌");
        System.out.println(a);
        System.out.println(map.containsKey("영헌")); // 해당 키값이 있으면 true
        
        //Map의 Value를 LinkedList로
        List<Integer> list = new LinkedList<>(map.values());
        System.out.println(list);
        //[100, 5, 30, 15, 10, 100, 5]
        
        //Map의 key를 Set으로
        Set<String> keys = map.keySet();
        System.out.println(keys);
        //[영헌, 쌍용, 성원, 혜리, 주영, 자바, 풀스텍]
        
        System.out.println("전체 출력 -1");
        Set<String> set = map.keySet(); // 키에 대한 set 객체
        Iterator<String> it  = set.iterator();
        while(it.hasNext()) {
            String key=it.next();
            Integer value = map.get(key);
            System.out.println(key+"->"+value);
            
        }
        /*
        *    Map.Entry : 맵의 앤트리 (키와 값의 한쌍<페어>)
         * 
         */
        System.out.println("전체 출력 -2");
        Set<Map.Entry<String, Integer>> set2 = map.entrySet();
        System.out.println(set2);
        //[영헌=100, 쌍용=5, 성원=30, 혜리=15, 주영=10, 자바=100, 풀스텍=5]
        
        Iterator<Map.Entry<String, Integer>> it2 = set2.iterator();
        while(it2.hasNext()) {
            Map.Entry<String, Integer> e = it2.next();
            String key = e.getKey();
            Integer value = e.getValue();
            System.out.println(key+"->"+value);
        }
//        영헌->100
//        쌍용->5
//        성원->30
//        혜리->15
//        주영->10
//        자바->100
//        풀스텍->5
 
    }
}
 
cs

댓글