관리 메뉴

프로그래밍 삽질 중

(3)HashMap<K, V> 설명 및 문제 본문

과거 프로그래밍 자료들/자바(Java)

(3)HashMap<K, V> 설명 및 문제

평부 2021. 3. 8. 23:47

※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 <StringString> map = new HashMap <StringString>();
    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