JAVA 19일차

MOZZI KIM·2022년 11월 17일
0

JAVA

목록 보기
19/21
post-thumbnail

1. 아래를 참고하여 프로그래밍하시오.

나라 이름과 인구를 입력하세요.(: Korea 5000)
나라 이름, 인구 >> Korea 5000
나라 이름, 인구 >> USA 1000000
나라 이름, 인구 >> Swiss 2000
나라 이름, 인구 >> France 3000
나라 이름, 인구 >> 그만

인구 검색 >> France
France의 인구는 3000
인구 검색 >> 스위스
스위스 나라는 없습니다.
인구 검색 >> 그만
============
package MyselfPrac;
import java.util.*;

public class CountryHash {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		HashMap<String, Integer> map = new HashMap<>();
		System.out.println("나라 이름과 인구를 입력하세요. (예) 한국 4000 \n 항상 <그만>을 입력하면 종료됩니다.");
		try {
			while(true) {
				System.out.print("나라 이름  인구 >> ");
				String ct = sc.next();

				if(ct.equals("그만")) {
					break;
				}
				int po = sc.nextInt();
				map.put(ct, po);
			}
			System.out.println();

			while(true) {
				
				System.out.print("인구 검색 >> ");
				String sh = sc.next();
				if(sh.equals("그만")){
					System.out.println("종료");
					break;
				}
				else if(!map.containsKey(sh)) {
					System.out.println("그런 나라는 없어요!");
					continue;
				}
				else {
					System.out.println("검색한 나라: " + sh + " , 인구 수 : " + map.get(sh));
				}
			}


		}catch (Exception e) {
			e.printStackTrace();
			System.out.println("잘못된 입력입니다. 프로그램을 종료합니다.");
		}

	}

}

2. 큐와 스택에 대하여 설명하시오.(필수)


3. Map 에 대하여 설명하시오.

📌Map은 선언 시 <key, value>로 값을 넣는다

Key와 Value는 한 쌍으로 Key로 식별하고 Value에 사용할 값을 넣는 식이다.
여기서 Key는 중복이 불가능하고, 동일한 Key 값으로 값을 넣을 시 최근에 넣은 값이 적용된다.


📌Map의 주요 메소드들

Map 안에 값 넣기 👉 Map.put(key,value);
Map 안의 값 가져오기 👉 Map.get(key);
Map 크기 확인 👉 Map.size();
Map 안의 내용 변경하기 👉 Map.replace(key, value);
Map 안에 특정 Key, Value 들었는지 확인 👉 Map.containsKey(key); Map.containsValue(value);
Map의 크기가 0인지 확인 👉 Map.isEmpty();
Map 안의 내용 삭제 👉 Map.remove(key);
Key가 있으면 Value 없으면 default 호출 👉 Map.getOrDefault(key, default); - Map에 key에 해당하는 값이 없을 경우 default 호출
Key가 없거나 Value가 null일때만 삽입 👉 Map.putIfAbsent(key, value);


📌 Map의 선언 차이

HashMap, TreeMap, HashTable, LinkedHashMap 으로 선언이 가능한데 차이점은 아래와 같다

👉 HashMap

  • Map 안에서 key/value에 따른 순서 없음

👉 TreeMap

  • key 값에 따라 오름차순 정렬, 정렬 때문에 대량의 데이터 삽입/삭제시 오래 걸림

👉 LinkedHashMap

  • 삽입 순서에 따라 정렬

👉 HashTable

  • key/value에 null을 넣을 수 없음, 동기화(synchronized) 되어있음.

4. 아래의 TreeMap의 Value를 확인 하기 위한 소스를 짜시오.⭐

<TreeMap<Integer, String> map = new TreeMap<>();
map.put(45, "Brown");
map.put(37, "James");
map.put(23, "Martin");
------------------------------------------------------------------------------

import java.util.*;

public class TreeValue {

	public static void main(String[] args) {
		TreeMap<Integer, String> map = new TreeMap<>();
		map.put(45, "Brown");
		map.put(37, "James");
		map.put(23, "Martin");
		
		Set<Integer> keys = map.keySet();
		
		for (Integer s : keys) {
			System.out.println(map.get(s));
		}
	}

}

5. 이름과 학점(4.5만점)을 5개 입력받아 해시맵에 저장하고, 장학생 선발 기준을 입력받아 장학생 명단을 출력하라.

이름과 학점>> 강나래 3.1
이름과 학점>> 니보라 3.3
이름과 학점>> 강하늘 4.3
이름과 학점>> 울나리 4.0
이름과 학점>> 그만해 3.7
장학생 선발 학점 기준 입력>> 3.2
장학생 명단: 그만해 강하늘 니보라 울나리 

package MyselfPrac;

import java.util.*;

public class GradeHashPrac {

	public static void main(String[] args) {
		final int MAX_STUDENT = 5;

		Scanner sc = new Scanner(System.in);
		HashMap<String, Double> student = new HashMap<String, Double>();

		System.out.println("5명의 학생 이름과 학점을 입력해주세요. 예) 홍길동 4.5");
		try {
			for (int i = 1; i <= MAX_STUDENT; i++) {
				System.out.print("이름과 학점 >> ");
				String n = sc.next();
				double gd = sc.nextDouble();
				student.put(n, gd);
			}
			Set<String> keys = student.keySet();

			System.out.print("장학생 선발 학점 기준 입력 >> ");
			double gs = sc.nextDouble();
			System.out.print("장학생명단 : ");
			for (String key : keys) {
				if(student.get(key)>= gs) {
					System.out.print(key + ' ');
				}
			}
			sc.close();
		}catch (Exception e) {
			e.printStackTrace();
			System.out.println("오류. 종료합니다.");
		}
	}

}
profile
코린이

2개의 댓글

comment-user-thumbnail
2022년 11월 17일

엄마 정말 큰 도움이 되었어요.... 늘 감사합니다.....

1개의 답글