#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<String, String>> list = null; list = new ArrayList<>(); Map<String, String> 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<String, String> 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 |