2019.01.09 컬렉션 프레임워크:Map,Set,list

2019. 1. 9. 15:45JAVA

#1 Map 컬렉션

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
package com.exam;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
 
public class Test1 {
 
    public static void main(String[] args) {
        // Map 컬렉션
        // HashMap - 스레드 동기화가 적용안됨. 스레드에 안전하지 않음.
        // Hashtable - 스레드 동기화가 적용됨. 스레드에 안전함.
 
        // Map에서 키는 Set이다. 유일한 값만 가짐.
        
        
        // 타입매개변수 생략시 <Object, Object> 적용됨 
        Map<Integer, String> map = new HashMap<Integer, String>();
        
        // 데이터 추가(저장)
        map.put(0"홍길동"); // 정수 키값은 오토박싱되서 들어감 
        map.put(1"성춘향"); // 신규 데이터 저장
        map.put(3"이몽룡");
        map.put(4"신사임당");
        map.put(5"세종대왕");
        
        // 기존 데이터 수정
        map.put(1"이순신"); // 성춘향->이순신 수정
        
        // 요소 크기 확인
        System.out.println("요소 크기: "+map.size());
        
        // 요소 한개 가져오기
        String name = map.get(4); // 키를 이용해서 값을 꺼냄
        System.out.println(name);
        
        System.out.println("---------------");
        
        // 맵의 모든 요소를 접근하는 방법
        Set<Integer> keySet = map.keySet(); // 공통작업
        // 1) 반복자(Iterator) 사용하는 방법
        Iterator<Integer> iter = keySet.iterator();
        while (iter.hasNext()) {
            int num = iter.next(); // 키를 한개씩 꺼냄
            String s = map.get(num); // 키를통해 값을 가져옴
            System.out.println(s);
        }
        
        System.out.println("---------------");
        
        // 2) for-each문 사용하는 방법
        for (int num : keySet) { // 오토언박싱
            String s = map.get(num);
            System.out.println(s);
        }
        
        // 삭제
        map.remove(3);
        
        
        // 모든 요소 삭제
        map.clear();
        // 또는 map = null;
        
    } // main()
 
}
 
cs




#2 Map의 사용


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
package com.exam;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
 
public class Test2 {
 
    public static void main(String[] args) {
        // Map에서 Key는 Set이다.
        // Set은 유일한 요소만 저장가능.
        Map<String, Person> map = new HashMap<>();
        
        Person p = new Person();
        p.setId("aaa");
        p.setPasswd("1234");
        p.setName("홍길동");
        map.put(p.getId(), p);
        
        p = new Person("bbb""1234""성춘향"22);
        map.put(p.getId(), p);
        
        p = new Person("ccc""1234""이몽룡"17);
        map.put(p.getId(), p);
        
        p = new Person("ddd""1234""이순신"44);
        map.put(p.getId(), p);
        
        p = new Person("eee""1234""신사임당"50);
        map.put(p.getId(), p);
        
        // 전체요소 출력
        Set<String> keySet = map.keySet();
        
        Iterator<String> iter = keySet.iterator();
        while (iter.hasNext()) {
            String key = iter.next();
            Person person = map.get(key);
            System.out.println(person);
        }
        
        // 수정
        map.put("ddd"new Person("ddd""5678""고길동"55));
        
        // 삭제
        map.remove("ccc");
        
        System.out.println("------------");
        
        // 전체 요소 출력
        for (String key : keySet) {
            Person person = map.get(key);
            //System.out.println(person);
            
            String id = person.getId();
            int age = person.getAge();
        }
        
        // 모든 요소 삭제
        map.clear();
        
        if (map.isEmpty()) { // 요소가 없으면 true / 있으면 false 리턴
            System.out.println("요소 없음");
        }
 
        
    } // main()
 
}
 

cs


#3 List -> Map

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
package com.exam;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public class Test3 {
 
    public static void main(String[] args) {
        // 컬렉션(List) 안에 요소로써 컬렉션(Map) 저장
        List<Map<StringString>> list = null;
        list = new ArrayList<>();
        
        Map<StringString> map = new HashMap<>();
        map.put("id""aaa");
        map.put("passwd""1234");
        map.put("name""홍길동");
        list.add(map);
        
        map = new HashMap<>();
        map.put("id""bbb");
        map.put("passwd""1234");
        map.put("name""성춘향");
        list.add(map);
        
        map = new HashMap<>();
        map.put("id""ccc");
        map.put("passwd""1234");
        map.put("name""이몽룡");
        list.add(map);
        
        // 모든 요소 출력
        for (Map<StringString> m : list) {
            //System.out.println(m);
            String id = m.get("id");
            String passwd = m.get("passwd");
            String name = m.get("name");
            System.out.println(id+" : "+passwd+" : "+name);
        }
        
        
        
    } // main()
 
}
 
cs


#4 Map,List 활용

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
package com.exam;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public class Test4 {
 
    public static void main(String[] args) {
        // 컬렉션(List) 안에 요소로써 컬렉션(Map) 저장
        List<Map<String, Object>> list = null;
        list = new ArrayList<>();
 
        Map<String, Object> map = new HashMap<>();
        map.put("id""aaa");
        map.put("passwd""1234");
        map.put("name""홍길동");
        map.put("age"30);
        list.add(map);
 
        map = new HashMap<>();
        map.put("id""bbb");
        map.put("passwd""1234");
        map.put("name""성춘향");
        map.put("age"28);
        list.add(map);
 
        map = new HashMap<>();
        map.put("id""ccc");
        map.put("passwd""1234");
        map.put("name""이몽룡");
        map.put("age"29); // 오토박싱 - Integer 객체로 변환되어 저장
        list.add(map);
 
        // 모든 요소 출력
        for (Map<String, Object> m : list) {
            // System.out.println(m);
            String id = (String) m.get("id");
            String passwd = (String) m.get("passwd");
            String name = (String) m.get("name");
            int age = (Integer) m.get("age"); // 오토언박싱 발생
            System.out.println(id + " : " + passwd + " : " + name + " : " + age);
        }
 
    } // main()
 
}
 
cs


#5 컬렉센 특징

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
package com.example;
 
import java.util.ArrayList;
 
public class Test1 {
 
    public static void main(String[] args) {
    // 컬렉션 특징: 가변크기 
    // List 인터페이스 - ArrayList ,vector
    int[] array = new int[5]; // 배열은 고정 크기
    array[0= 10;
    
    Integer[] arrInteger = new Integer[5]; // Integer는 클래스이므로 배열을 만들면 참조변수가 된다.
    arrInteger[0= 10// AutoBoxing
    
    ArrayList<Integer> list = new ArrayList<>(); // <generics> -> 제네릭 타입 매개 변수
    list.add(10); // AutoBoxing, 숫자 저장가능(int ,double ...)
    
    ArrayList<String> strList = new ArrayList<>();
    strList.add("JAVA"); // 자동적으로 0번째에 저장됨 , 다음  add일 경우 1번째에 저장됨
    strList.add("JDK");
    strList.add("안드로이드");
    strList.add(0,"HTML"); // 0번째에 저장된 내용을 밀어냄 
    System.out.println(strList.size());
    System.out.println(strList); // [HTML, JAVA, JDK, 안드로이드]
    strList.remove(0); // index의 0번째를 삭제
    strList.remove(strList.size()-1); // 마지막 index를 삭제
    }
 
}
 
cs


#6 맵의 모든 요소를 접근하는 방법

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
package com.example;
 
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
 
/* Map,Set */
public class Test2 {
 
    public static void main(String[] args) {
        // Map에서는 키는 Set이다.
        Map<Integer, String> map = new HashMap<>();
 
        // 데이터 추가
        map.put(0"홍길동");
        map.put(1"이몽룡");
        // 맵의 모든 요소를 접근하는 방법
        Set<Integer> keySet = map.keySet(); 
        for (int i : keySet) {
            String s = map.get(i);
            System.out.println(s);
        }
    }
 
}
 
cs