Java - Collection 프레임워크의 Map
2020. 6. 30. 23:17ㆍ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
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Ex4 {
public static void main(String[] args) {
/*
* Collection 프레임워크의 Map 인터페이스 계열
* 키(key)와 값(value)을 한쌍으로 갖는 데이터구조
* 키는 중복 불가능, 값은 중복가능
*
* 대표적인 구현체 클래스 : HashMap, Properties
*
* ex) 주민등록번호와 이름, 전화번호와 이름 등
*/
Map map=new HashMap();
System.out.println("Map 객체 크기 : "+map.size());
System.out.println("Map 객체가 비어있는가? : "+map.isEmpty());
System.out.println("Map 객체 전체요소 출력 : "+map);
//Object put(Object key, Object value) : key에 해당하는 value 저장
map.put("admin","관리자");
map.put("hong123","홍길동");
map.put("hong456","홍길동");//Map 객체는 값(value)에 대한 중복 허용
System.out.println("Map 객체 전체 요소 출력 : "+map);
map.put("admin","운영자");//Map 객체는 키(key)에 대한 중복 허용하지 않음
System.out.println("Map 객체 전체 요소 출력 : "+map);//관리자가 운영자로 교체됨
//put() 메서드 리턴타입이 있는 이유는 중복된 키값 지정 시 제거되는 값을 리턴
System.out.println(map.put("admin","관리자"));//기존 준영자 값 리턴됨
System.out.println(map.put("admin1","운영자"));//중복키가 아니므로 null 리턴
//--------------------------------------------
//Object get(Object key) : key에 해당하는 value 리턴
//키가 존재하지 않으면 null 리턴
System.out.println("admin 키(아이디)의 값(이름) : "+map.get("admin"));
System.out.println("admin1 키(아이디)의 값(이름) : "+map.get("admin11"));
//boolean containsKey(Object key) : key가 존재하는지 여부 리턴
System.out.println("hong123 키(아이디)가 존재하는가? : "+map.containsKey("hong123"));
System.out.println("hong123 키(아이디)가 존재하는가? : "+map.containsKey("hong12"));
//boolean containsValue(Object value) : value가 존재하는지 여부 리턴
System.out.println("홍길동 값(이름)이 존재하는가? : "+map.containsValue("홍길동"));
System.out.println("이순신 값(이름)이 존재하는가? : "+map.containsValue("이순신"));
//----------------------------------
//Set keySet() : 객체 안의 모든 key 들을 Set 타입 객체로 리턴
Set keySet=map.keySet();
System.out.println("모든 키 : "+keySet);
//Collection values() : 객체 안의 모든 value 들을 Collection 타입 객체로 리턴
//Collection 타입의 자식들 타입으로도 전달받을수있음.
// 단, Collection-> List 또는 Set 으로 다운캐스팅이 불가능하므로
// new 연산자를 사용하여 객체 생성 파라미터에 values() 메서드 리턴값 전달
//Collection 타입리턴하는데 list에 넣으면 중복데이터 유지, set에 넣으면 중복데이터삭제
if(map.values() instanceof List) {
System.out.println("Map->List 로 변환가능");
}else {
System.out.println("Map->List 로 변환 불가능");
}
// List valueList=(List) map.values();//다운캐스팅 불가! ClassCastExection 발생
//ArrayList 객체 생성시 , 파라미터로 values()리턴값 전달하면 Collection->List 가능
List valueList=new ArrayList(map.values());
System.out.println("모든 값 : "+valueList);
//또는 COllection 타입 변수로 저장도 가능
Collection c=map.values();
System.out.println("모든 값 : "+c);
//Set entrySet() : 모든 키와 값의 세트
System.out.println(map.entrySet());
//----------------------------------------------------
//Object remove(Object key) : key에 해당하는 key 와 value 모두 삭제(삭제값은 리턴됨)
System.out.println("admin1 키 삭제 : "+map.remove("admin1"));
System.out.println("admin11 키 삭제 : "+map.remove("admin11"));//키가 존재하지않으므로 null 리턴
System.out.println(map);
//boolean remove(Object key, Object value) : key 와 value 에 해당하는 key, value 삭제 여부리턴
//삭제될(존재할) 경우 true, 삭제되지(존재하지) 않을 경우 false 리턴
System.out.println("admin 키의 관리자1값 삭제 : "+map.remove("admin", "관리자1"));
System.out.println(map);
System.out.println("admin 키의 관리자값 삭제 : "+map.remove("admin", "관리자"));
System.out.println(map);
}
}
|
cs |
Map은 키와 값을 쌍으로 갖는 데이터 구조를 가지고 있는 인터페이스 계열이라고 한다.
키는 중복이 될 수 없지만 값은 중복이 가능한데 예를 들면 주민번호는 키이고 값은 이름 정도의 예를 들 수 있다.
List와는 다른 방식으로 저장되고 활용되기때문에 다운 캐스팅도 불가능하고 유의해서 사용되어야 하겠다.
'Java' 카테고리의 다른 글
Java - Generic (0) | 2020.06.30 |
---|---|
Java - Stack & Queue (0) | 2020.06.30 |
Java - BigInteger,BigDecimal (0) | 2020.06.30 |
Java - StringBuilder & StringBuffer (0) | 2020.06.30 |
Java - Wrapper (0) | 2020.06.30 |