package Java_preCourse.Day4;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//사용자의 입력을 받기위해서 스캐너를 만든다
Map<String,Integer> map = Map.of("사이다",1700
,"콜라",1900,"식혜",2500,"솔의 눈",3000);
//맵을 이용해서 문자열과 정수를 담을 수 있는 그릇을 만든다
//사용자에게 메뉴와 가격을 알린다
System.out.println("-----자판기 품목-----");
for(String key : map.keySet()){
System.out.println("메뉴:"+key+" 가격:"+map.get(key));
}
System.out.println("------------------");
//사용자가 구매하는 단계
System.out.print("구매할 제품의 이름을 입력하시오:");
//솔의 눈 - 공백처리 때문에 nextLine()을 사용한다
String menu = sc.nextLine();
//map에 존재하지 않는 메뉴일 경우 프로그램을 종료한다.
if(!map.containsKey(menu)) {
System.out.println("없는 메뉴입니다");
}
else{
//지불할 비용을 입력받는다
System.out.print("투입하실 비용을 입력하시오:");
int total = sc.nextInt();
//선택한 메뉴의 밸류값이 지불 비용보다 낮은 경우 프로그램을 종료한다
if(total<map.get(menu)){
System.out.println("돈이 부족합니다");
}
else{
System.out.println("거스름돈은 "+(total-map.get(menu))+"원 입니다.");
}
}
}
}
- Map은 key값과 value값을 하나의 쌍으로 저장할 수 있다
- 배열처럼 순서로 값을 구하는 것이 아니라 key값을 통해 value값을 얻음
- 따라서 저장 순서를 유지하지 않는다.
Map<자료형,자료형> map1 = new Hashmap<>();
Map<자료형,자료형> map2 = Map.of(key,value,key,value...);
//추가(put)가 불가능해짐 -> 불변(Immutable Map) 맵
- Map을 선언할 때 Hashmap으로 선언하는 이유는, Map자체는 인터페이스이기 때문이다
- HashMap은 Map을 바탕으로 만들어진 클래스이기 때문에 위처럼 선언해야한다.
- map.get(key)를 통해서 value값을 받아올 수 있다
- map.containsKey(key)를 통해서 true/false를 얻을 수 있다