(3)HashMap<K, V> 설명 및 문제
※HashMap 특성
- java.util.HashMap
- K : 키로 사용할 요소의 타입
- V : 값을 사용할 요소의 타입 지정
- 키와 값의 쌍으로 구성되는 요소를 다루는 컬렉션 (값을 검색하기 위해서는 반드시 키 필요)
- 삽입 및 검색이 빠른 특징을 가짐
→ 요소 삽입 : put() 메소드
→ 요소 검색 : get() 메소드
- HashMap 문법
HashMap<String, String> hm = new HashMap<String, String>();
[예시1]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.util.HashMap;
import java.util.Map;
public class HashMapEx1 {
public static void main(String[] args) {
Map<String, Integer> m = new HashMap<String, Integer>();
String[] sample = {"to", "be", "or", "not", "to", "be", "is", "a", "problem"};
for(String a : sample) {
Integer freq = m.get(a);
m.put(a, (freq == null) ? 1 : freq + 1);
}
System.out.println(m.size() + " 단어가 있습니다.");
System.out.println(m.containsKey("to"));
System.out.println(m.isEmpty());
System.out.println(m);
}
}
|
cs |
[문제 1]
영어 단어와 한글 단어를 쌍으로 HashMap에 저장하고 영어 단어로 한들단어를 검색하는 프로그램 작성하기
예) (help, 도움)
(coffee, 커피)
(sleep, 잠)
[호출]
찾고 싶은 단어는? coffee
커피
찾고 싶은 단어는? love
null
[문제1 답]
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
|
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class DictionaryEx {
public static void main(String[] args) {
HashMap <String, String> map = new HashMap <String, String>();
map.put("help", "도움");
map.put("coffee", "커피");
map.put("sleep", "잠");
Scanner scan = new Scanner(System.in);
while(true) {
System.out.println("찾고 싶은 단어는 ");
System.out.println(map.get(scan.next()));
//방식 동일, 다른 표현
// String key = scan.next();
// String value = map.get(key);
// System.out.println(value);
}
}
}
|
cs |
[문제 2]
Student 클래스
- 필드 : 이름, id, 전화번호
- 생성자 : 모든 필드들을 초기화하는 매개변수 생성자
- 메소드 : getter
* 이름을 '키'로 하고 Student 객체를 '값'으로 하는 해시맵 작성하기
<Student>
- String name
- int id
- String phoneNo
+ 모든 필드들을 초기화하는 매개변수 생성자
+ public String toString() -> 이름 : 아이디 비밀번호
[출력값]
이름 아이디 전화번호 순으로 입력하시오
(입력값) conan 1 010-1111-1111
(입력값) rose 2 010-2222-2222
(입력값) ran 3 010-3333-3333
(입력값) kid 4 010-4444-4444
등록된 학생의 수 : 4
kid : 4 010-4444-4444
conan 1 010-1111-1111
rose 2 010-2222-2222
ran 3 010-3333-3333
[문제 2 답]
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 | import java.util.HashMap; import java.util.Map; import java.util.Scanner; class Student { String name; int id; String phoneNo; public Student(String name, int id, String phoneNo) { this.name = name; this.id = id; this.phoneNo = phoneNo; } public String toString() { return String.format("%s : %d %s, name, id, phoneNo); } } public class StudentEx { public static void main(String[] args) { HashMap <String, Student> stu = new HashMap <String, Student>(); Scanner scan = new Scanner(System.in); System.out.println("이름, 아이디, 전화번호 순으로 입력하시오"); for(int i=0; i<4; i++) { // 이름을 '키'로 하고 Student 객체를 '값'으로 하는 해시맵 작성하기 String name = scan.next(); stu.put(name, new Student2(name, scan.nextInt(), scan.next())); } System.out.println("등록된 학생의 수 : " + stu.size()); for(Map.Entry<String, Student> m : stu.entrySet()) { System.out.println(m.getValue()); } } } | cs |