hyeonga_code

Java_67_Collection_Map 본문

Java

Java_67_Collection_Map

hyeonga 2023. 10. 27. 05:59
반응형


- Map
    - 값을 넣을 때 key와 value를 쌍으로 입력합니다.
    - 키가 중복될 경우 수정이 가능합니다.
    - value는 중복이 가능합니다.
    - 종류
        - HashMap
            - 해싱 기법으로 데이터를 저장합니다.
            - 데이터가 많아도 검색이 빠른 장점이 있습니다.
            - 데이터를 키와 값의 쌍으로 저장합니다.
                - 중복된 Key 값은 수정됩니다.
            - Map 인터페이스를 구현하는 대표적인 컬렉션 클래스입니다.
            - 순서를 유지하기 위해 LinkedHashMap을 사용합니다.

            - .put('키', '데이터'); _ 키와 데이터 저장
                - 키 값이 중복인 경우 데이터가 수정됩니다.
            - .size(); _ set 크기
            - .remove('키'); _ 키와 데이터 삭제
            - .get('키'); _ 특정 키의 값 호출
            - .containskey('키'); _ 포함한 데이터가 있는지
        - Hashtable
        - TreeMap


'MapEx.java' 클래스 생성
=====

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
package adv.collection_ex;
 
import java.util.HashMap;
import java.util.Map;
 
public class MapEx {
    
    public static void main(String[] args) {
        
        // HashMap <key, value>
        Map<StringString> hashmap = new HashMap<>();
        hashmap.put("A""Banana");
        hashmap.put("B""Apple");
        hashmap.put("C""Orange");
        hashmap.put("B""Mandarine");
        
        System.out.println("hashmap.get(\"B\") : " + hashmap.get("B"));
            /*    hashmap.get("B") : Mandarine    */
        
        // 삭제
        hashmap.remove("A");
        
        System.out.println("hashmap.size() : " + hashmap.size());
            /*    hashmap.size() : 2    */
        
        // 키 값으로 출력 : 키 값으로 정렬됩니다.
        for(String key : hashmap.keySet() ) {
            System.out.print("hashmap.get(key) : " + hashmap.get(key));
            System.out.println("| hashmap.get(" + key + ") : " + hashmap.get(key));
        }
            /*
                hashmap.get(key) : Mandarine| hashmap.get(B) : Mandarine
                hashmap.get(key) : Orange| hashmap.get(C) : Orange
             */
    }
}



=====

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
import java.util.*;
 
public class ex0325 {
    public static void main(String[] args) {
        Hashtable map = new Hashtable();
        
        map.put("data 1""type 1");
        map.put("data 2""type 2");
        map.put("data 3""type 3");
        map.put("data 4""type 4");
        map.put("data 5""type 5");
        
        System.out.println("map = " + map);
        // map = {data 5=type 5, data 4=type 4, data 3=type 3, data 2=type 2, data 1=type 1}
 
        map.put("data 4""type 1");
        // 중복이 아닌 데이터 덮어쓰기로 됨
        System.out.println("map = " + map);
        // map = {data 5=type 5, data 4=type 1, data 3=type 3, data 2=type 2, data 1=type 1}
    
        System.out.println("map size : " + map.size());    // map size : 5
        // 배열형으로 꺼내서 사용할 수는 없다
        
        map.remove("data 5");
        // 데이터 삭제
        System.out.println("map = "+ map);
        // map = {data 4=type 1, data 3=type 3, data 2=type 2, data 1=type 1}
        System.out.println("data 3 : " + map.get("data 3"));    // data 3 : type 3
        
        if(map.containsKey("data 1")) {
            System.out.println("Data 1");
        }
        
        Enumeration enu = map.keys();
        // 키 값 모두 가져오기
        while(enu.hasMoreElements()) {
            // hasNext() 동일 명령
            Object obj = enu.nextElement();
            // next() 동일 명령
            String key = (String)obj;
            Object obj2 = map.get(key);
            String value = (String)obj2;
            System.out.println(key + " : " + value);
        }
    }
}






 - Hashtable로 위의 작업
<Member>  >  'MemvberProImpl'
=====

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
package Member2;
import java.util.*;
 
public class MemberProImpl implements MemberPro{
    private Scanner in;
    private Hashtable map;
    // Hashtable 이용할 것
    
    public MemberProImpl() {
        // 생성자 선언
        in = new Scanner(System.in);
        map = new Hashtable();
    }
    
    @Override    
    public void input() {
        System.out.print("이름을 입력 : ");
        String name = in.next();
        System.out.print("전화번호를 입력 : ");
        String tel = in.next();
        System.out.print("주소를 입력 : ");
        String addr = in.next();
        Member mb = new Member(name, tel, addr);
        
        map.put(name, mb);
        // 이름을 key 값으로 mb를 value 값에 넣음
    }
 
    @Override
    public void view() {
        Enumeration enu = map.keys();
        // key 값을 꺼내오기 위함
        while(enu.hasMoreElements()) {
            // 키 값이 존재하는 동안 반복
            Object obj1 = enu.nextElement();
            // 해당 키 값 obj에 저장
            String key = (String)obj1;
            Object obj2 = map.get(key);
            Member mb = (Member)obj2;
            mb.disp();
        }
    }
 
    @Override
    public void edit() {
        System.out.print("수정할 회원의 이름 : ");
        String name = in.next();
        if (!map.containsKey(name)) {
            System.out.println(name+"님은 저희 회원이 아닙니다.");
        }else {
            Member mb = (Member)map.get(name);
            System.out.println("현재 "+name+"님의 전화번호는 " + mb.getTel()+"번입니다.");
            System.out.print("수정하실 전화번호 : ");
            mb.setTel(in.next());
            System.out.println("현재 "+name+"님의 주소는 " + mb.getAddr()+"번입니다.");
            System.out.print("수정하실 주소 : ");
            mb.setAddr(in.next());
            System.out.println(name+"님의 정보를 수정하였습니다.");
        }
    }
 
    @Override
    public void delete() {
        System.out.print("삭제할 회원의 이름 : ");
        String name = in.next();
        if (map.containsKey(name)) {
            map.remove(name);
            System.out.println(name+"님을 삭제합니다.");
        }else {
            System.out.println(name+"님은 저희 회원이 아닙니다.");
            
        }
    }
 
    @Override
    public void exit() {
        System.out.println("프로그램을 종료합니다.");
        System.exit(0);
    }
}



반응형

'Java' 카테고리의 다른 글

Java_69_Assertion_단언  (0) 2023.10.27
Java_68_Collection_List  (0) 2023.10.27
Java_66_Collection_Set, List, Queue, Map  (0) 2023.10.26
Java_65_Generic_제네릭  (0) 2023.10.26
Java_64_Stream_Byte 입출력  (0) 2023.10.26