최신글
hyeonga_code
Java_67_Collection_Map 본문
반응형
- 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<String, String> 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 |