자판기 프로그램을 만드는 도중 단순한 printf 를 출력하기 보다 Map 컬렉션을 사용하면 더 효과적일 수 있을거같았다.
✅ Map이란?
Map은 키+키 값으로 구성된 엔트리 객체이다.
(키 중복 x , 값 중복 ㅇ)
단, 저장 순서는 중요하지 않다.
기본 형태
HashMap
Map<키 타입,값 타입> = new HashMap<키 타입,값 타입>();
예를 들어 키의 값을 String 타입 , 값을 Integer 타입으로 갖는다면 아래와 같이 작성 할수 있다.
Map(String,Integer>map = new HashMap<String,Integer>();
Map(String,Integer>map = new HashMap<>();
HashMap <k,v> 주요 메소드
void clear() | 해당 맵(map)의 모든 매핑(mapping)을 제거함. |
boolean containsKey(Object key) | 해당 맵이 전달된 키를 포함하고 있는지를 확인함. |
boolean containsValue(Object value) | 해당 맵이 전달된 값에 해당하는 하나 이상의 키를 포함하고 있는지를 확인함. |
V get(Object key) | 해당 맵에서 전달된 키에 대응하는 값을 반환함. 만약 해당 맵이 전달된 키를 포함한 매핑을 포함하고 있지 않으면 null을 반환함. |
boolean isEmpty() | 해당 맵이 비어있는지를 확인함. |
Set<K> keySet() | 해당 맵에 포함되어 있는 모든 키로 만들어진 Set 객체를 반환함. |
V put(K key, V value) | 해당 맵에 전달된 키에 대응하는 값으로 특정 값을 매핑함. |
V remove(Object key) | 해당 맵에서 전달된 키에 대응하는 매핑을 제거함. |
boolean remove(Object key, Object value) | 해당 맵에서 특정 값에 대응하는 특정 키의 매핑을 제거함. |
V replace(K key, V value) | 해당 맵에서 전달된 키에 대응하는 값을 특정 값으로 대체함. |
boolean replace(K key, V oldValue, V newValue) | 해당 맵에서 특정 값에 대응하는 전달된 키의 값을 새로운 값으로 대체함. |
int size() | 해당 맵의 매핑의 총 개수를 반환함. |
https://computerreport.tistory.com/32
[Java]Lv2. 스파르타 자판기
문제 1.사용자가 볼 수 있게 메뉴를 표시합니다. 다음과 같은 음료를 실행창에 표시합니다. 사이다 1,700원 콜라 1,900원 식혜 2,500원 솔의눈 3,000원 2.사용자는 음료를 선택할 수 있습
computerreport.tistory.com
위 링크의 문제를 Map 컬렉션을 사용해 풀어보았다.
1. V put(K key, V value)
Map<String,Integer> beverages = new HashMap<String,Integer>();
beverages.put("사이다",1700);
beverages.put("콜라",1900);
beverages.put("식혜",2500);
beverages.put("솔의눈",3000);
put 메소드를 사용하여 baverages 라는 map 안에 데이터를 삽입 시킬수 있다.
◈ 만약,키가 같다면 마지막에 저장한 값만 저장된다
2. Set<K> keySet()
map 에 삽입되어있는 값을 출력하기위해 키 Set 컬렉션을 얻고 반복하여 키와 값을 출력한다.
Set<String> keySet =beverages.keySet();
Iterator<String> KeyIterator=keySet.iterator();
while(KeyIterator.hasNext())
{
String k=KeyIterator.next();
Integer v =beverages.get(k);
System.out.println(k + " : "+ v);
}
3. V get(Object key)
입력한 key 에 해당하는 값을 얻고 싶다면 get 컬렉션을 사용하면 된다.
System.out.println(beverages.get("사이다"));
4. boolean containsKey(Object key)
입력한 키에 값의 유무를 판단하여 있다면 true 없으면 false 로 반환한다.
Scanner scanner =new Scanner(System.in);
String userChoice = scanner.nextLine();
if(beverages.containsKey(userChoice) == false)
{
System.out.print("실행을 종료합니다");
System.exit(0);
}
입력한 userChoice 가 bevarges map 컬랙션안에 해당하는 값이 없다면 실행을 종료시키는 코드이다.
4. V remove(Object key)
remove 메소드는 맵(Map)의 항목을 삭제하는 메소드로 key값에 해당되는 아이템(key, value)을 삭제한 후 그 value 값을 리턴한다.
System.out.println(bevarages.remove("사이다"));
사이다라는 키가 삭제되며 동시에 1700원을 출력 시킨다.
만약, 자판기에 갯수가 한정되어있다면 사용하기 좋을거 같다.
'Java' 카테고리의 다른 글
[Java]Enum이란? & 사용법 (0) | 2025.02.28 |
---|---|
[Java]코드 스타일 및 명명 규칙 (0) | 2025.02.24 |
[Java]난수 생성(math,Random) (0) | 2025.02.14 |
[Java]ArrayList (0) | 2025.02.11 |
[Java]객체 생성(new) (0) | 2025.02.06 |