gwooden_코린이
java_lterator_221201(9일차) 본문
728x90
lterator
List - set -Map
package 컬렉션프레임워크;
import java.util.ArrayList;
import java.util.Iterator;
public class Sample07 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
Iterator iter = null; // null 비어있다 0과는 다름 아예 비어있음
iter = list.iterator();
while (iter.hasNext()) {
// hasNext = list[a], a다음 값이 있으면 true 없음 false.
System.out.println(iter.next() + " ");
}
}
}
package 컬렉션프레임워크;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class Sample08 {
public static void main(String[] args) {
Iterator it = null;
List list = new ArrayList();
Set set = new HashSet();
for(int i = 1; i<=5; i++) {
list.add(i);
set.add(i+5);
}
System.out.println(list);
System.out.println(set);
it = list.iterator();
System.out.println("List");
System.out.println(it);
iteratorprint(it);
}
// 작업중인 클래스 내부에 메서드 생성
//private를 이용해 같은 클래스에서만 사용하게끔
//이런 방식은 잘 사용하지 않는편
private static void iteratorprint(Iterator it) { //Iterator객체를 받아서 it에 넘겨서
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
it = set.iterator();
System.out.println("List");
System.out.println(it);
iteratorprint(it);
}
// 작업중인 클래스 내부에 메서드 생성
//private를 이용해 같은 클래스에서만 사용하게끔
//이런 방식은 잘 사용하지 않는편
private static void iteratorprint(Iterator it) { //Iterator객체를 받아서 it에 넘겨서
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
boolean hasNext라는 메서드는true 또는 false 리턴
Map - 키(key), 값(value)
키 중복 불가
값 중복 가능
package 컬렉션프레임워크;
import java.util.HashMap;
public class Sample09 {
public static void main(String[] args) {
//명시에 주는게 좋다<Integer(키), String(값>
HashMap<Integer, String> hm = new HashMap<>();
//hm.put(key(키), value(값)
hm.put(1001, "고길동");
hm.put(1002, "aaaa");
hm.put(1003, "bbbbb");
System.out.println(hm);
}
}
for(int key : hm.keySet())
System.out.println(key);
key 키 = 주소
value 값 = 입력한 값
for(int key : hm.keySet())
System.out.println(key + "/" + hm.get(key));
hm.put(1001, "고길동");
hm.put(1002, "aaaa");
hm.put(1003, "고길동");
System.out.println(hm);
for(int key : hm.keySet())
System.out.println(key + "/" + hm.get(key));
value 값이 동일할 때
hm.put(1001, "고길동");
hm.put(1002, "aaaa");
hm.put(1001, "bbbb");
System.out.println(hm);
for(int key : hm.keySet())
System.out.println(key + "/" + hm.get(key));
key가 동일할 때 상황
System.out.println(hm.get(1002));
hm.remove(1002);
for(int key : hm.keySet())
System.out.println(key + "/" + hm.get(key));
for(String value : hm.values())
System.out.println(value);
package 컬렉션프레임워크;
import java.util.HashMap;
import java.util.Map;
public class Sample10 {
public static void main(String[] args) {
String[] names = {"홀길동", "김유신", "이순신"};
int[] nums = {1324, 4567, 9874};
Map map = new HashMap();
for(int i = 0; i<3; i++) {
map.put(names[i], nums[i]);
}
System.out.println(map);
}
}
// map.keySet();
// map.values();
//key 값과 value 값을 동시에 가져올 수 있게 작업
Set entry = map.entrySet();
//자료형이라 Object 사용
for(Object o : entry) {
Map.Entry m = (Map.Entry) o;
System.out.println("key : " + m.getKey() + ", value : " + m.getValue());
}
package 커피;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
///map 생성 (키와 값을 넣어줘야 되고) 제너널로 키에는 문자열만, 값에는 메뉴인포라는 객체를 넣을거다라고 지정
//처음에는 비워져 있는 상태
static Map<String, MenuInfo> map = new HashMap<>();
public static void main(String[] args) {
//메서드 호출
makeMenu();
selectMenu();
}
//메서드 생성 위치
static void makeMenu() {
//메뉴를 입력받아서 작동
//map.put("key", "value")
// new MenuInfo("아메리카노", 2000, "커피", "기본커피")) <-- value 값을 새롭게 객체를 생성해서 "아메리카노" 키 값에 다 넣어진것
map.put("아메리카노", new MenuInfo("아메리카노", 2000, "커피", "기본커피"));
map.put("카라멜마끼아또", new MenuInfo("카라멜마끼아또", 3500, "커피", "달달한커피"));
map.put("에스프레소", new MenuInfo("에스프레소", 1500, "커피", "쓴커피"));
}
static void selectMenu() {
Scanner sc = new Scanner(System.in);
String key;
//while문으로 true일때 계속 반속
while(true) {
System.out.println("메뉴를 선택해주세요");
System.out.println("[1] 메뉴보기 [2] 메뉴조회 [3] 메뉴추가 [4] 메뉴삭제 [5] 메뉴변경 [6] 종료");
int selMenu = sc.nextInt();
//위에서 입력한 값이 스위치문에서 그 값에 맞게 출력
switch(selMenu) {
//케이스 1일 때 아래 내용 출력
case 1 : //메뉴보기
System.out.println("===메뉴보기===");
//map.keySet() <--- 이걸 e에 넣고 이때 e가 키값이 된다.
for(String e : map.keySet()) {//key값을 다 받아와서 반복
// map.get(e).name 객체에 저장되어 있는 name이라는 변수를 불러와 출력
System.out.println("메뉴 : " + map.get(e).name); //map.get(e).name 맵에 저장되어 있는 객체에 이름을 가져와서 출력
System.out.println("가격 : " + map.get(e).price); //맵에 저장되어 있는 객체에 가격을 가져와서 출력
System.out.println("분류 : " + map.get(e).group); //맵에 저장되어 있는 객체에 분류를 가져와서 출력
System.out.println("타입 : " + map.get(e).type); //맵에 저장되어 있는 객체에 타입을 가져와서 출력
System.out.println("------------------------");
}
break;
case 2 : //메뉴조회
System.out.println("조회할 메뉴를 입력 : ");
key = sc.next(); //String key; <-- 위에서 문자열 key변수 선언함
if(map.containsKey(key)) { //바로 위에 key = sc.next(); key를 if안 조건식에 넣어준다.
System.out.println("메뉴 : " + map.get(key).name);
System.out.println("가격 : " + map.get(key).price);
System.out.println("분류 : " + map.get(key).group);
System.out.println("타입 : " + map.get(key).type);
} else { //기존에 있는 메뉴 중에 없는 메뉴를 입력할 경우
System.out.println("입력한 메뉴가 없음");
}
break;
case 3 :
System.out.println("추가할 메뉴 입력 : ");
key = sc.next();
if(map.containsKey(key)) {
System.out.println("중복 되는 메뉴 입니다"); //저장된 키 값 중에 같은 메뉴를 입력할 경우 프린트문 출력
} else { //아예 다른 값을 입력할 경우 아래 정보 입력 후 키 값에 저장
System.out.println("가격 입력 : ");
int price = sc.nextInt();
System.out.println("분류 입력 : ");
String group = sc.next();
System.out.println("설명 입력 : ");
String type = sc.next();
//위에 정보를 map에 추가로 넣어줘야 되기 때문에 .put 사용
//put 기존에 없는걸 추가 시키는 것
map.put(key, new MenuInfo(key, price, group, type));
}
break;
case 4 :
System.out.println("삭제할 메뉴 입력 : ");
key = sc.next();
if(map.containsKey(key)) {
map.remove(key); //저장된 키 값 중 입력한 값을 삭제 remove
System.out.println(key + "가 삭제됨");
} else {
System.out.println("삭제할 메뉴가 없음");
}
break;
case 5:
System.out.println("수정할 메뉴를 입력 : ");
key = sc.next();
if(map.containsKey(key)) { //키 값에 보관 되어 있는 것 중 위에서 입력받은 키 값에 정보를 수정하여 변경하도록
System.out.println("가격 입력 : ");
int price = sc.nextInt();
System.out.println("분류 입력 : ");
String group = sc.next();
System.out.println("설명 입력 : ");
String type = sc.next();
// 정보를 수정하기 위해서는 .replace 기능 사용
// replace 기존에 있는걸 수정하는 것
// put 보다 효쥴적이다.
map.replace(key, new MenuInfo(key, price, group, type));
} else {
System.out.println("수정할 메뉴가 없음");
}
break;
case 6:
System.out.println("종료합니다");
return; //보내는것 없지만 그냥 그 메서드를 종료시켜라
default:
System.out.println("잘못 입력");
}
}
}
}
메뉴를 선택해주세요 [1] 메뉴보기 [2] 메뉴조회 [3] 메뉴추가 [4] 메뉴삭제 [5] 메뉴변경 [6] 종료 1 ===메뉴보기=== 메뉴 : 아메리카노 가격 : 2000 분류 : 커피 타입 : 기본커피 ------------------------ 메뉴 : 카라멜마끼아또 가격 : 3500 분류 : 커피 타입 : 달달한커피 ------------------------ 메뉴 : 에스프레소 가격 : 1500 분류 : 커피 타입 : 쓴커피 ------------------------ 메뉴를 선택해주세요 [1] 메뉴보기 [2] 메뉴조회 [3] 메뉴추가 [4] 메뉴삭제 [5] 메뉴변경 [6] 종료 2 조회할 메뉴를 입력 : 아메리카노 메뉴 : 아메리카노 가격 : 2000 분류 : 커피 타입 : 기본커피 메뉴를 선택해주세요 [1] 메뉴보기 [2] 메뉴조회 [3] 메뉴추가 [4] 메뉴삭제 [5] 메뉴변경 [6] 종료 3 추가할 메뉴 입력 : 딸바 가격 입력 : 4000 분류 입력 : 스무디 설명 입력 : 딸기 메뉴를 선택해주세요 [1] 메뉴보기 [2] 메뉴조회 [3] 메뉴추가 [4] 메뉴삭제 [5] 메뉴변경 [6] 종료 1 ===메뉴보기=== 메뉴 : 아메리카노 가격 : 2000 분류 : 커피 타입 : 기본커피 ------------------------ 메뉴 : 딸바 가격 : 4000 분류 : 스무디 타입 : 딸기 ------------------------ 메뉴 : 카라멜마끼아또 가격 : 3500 분류 : 커피 타입 : 달달한커피 ------------------------ 메뉴 : 에스프레소 가격 : 1500 분류 : 커피 타입 : 쓴커피 ------------------------ 메뉴를 선택해주세요 [1] 메뉴보기 [2] 메뉴조회 [3] 메뉴추가 [4] 메뉴삭제 [5] 메뉴변경 [6] 종료 5 수정할 메뉴를 입력 : 딸바 가격 입력 : 6000 분류 입력 : 스무디스 설명 입력 : 딸기음료 메뉴를 선택해주세요 [1] 메뉴보기 [2] 메뉴조회 [3] 메뉴추가 [4] 메뉴삭제 [5] 메뉴변경 [6] 종료 1 ===메뉴보기=== 메뉴 : 아메리카노 가격 : 2000 분류 : 커피 타입 : 기본커피 ------------------------ 메뉴 : 딸바 가격 : 6000 분류 : 스무디스 타입 : 딸기음료 ------------------------ 메뉴 : 카라멜마끼아또 가격 : 3500 분류 : 커피 타입 : 달달한커피 ------------------------ 메뉴 : 에스프레소 가격 : 1500 분류 : 커피 타입 : 쓴커피 ------------------------ 메뉴를 선택해주세요 [1] 메뉴보기 [2] 메뉴조회 [3] 메뉴추가 [4] 메뉴삭제 [5] 메뉴변경 [6] 종료 4 삭제할 메뉴 입력 : 딸바 딸바가 삭제됨 메뉴를 선택해주세요 [1] 메뉴보기 [2] 메뉴조회 [3] 메뉴추가 [4] 메뉴삭제 [5] 메뉴변경 [6] 종료 1 ===메뉴보기=== 메뉴 : 아메리카노 가격 : 2000 분류 : 커피 타입 : 기본커피 ------------------------ 메뉴 : 카라멜마끼아또 가격 : 3500 분류 : 커피 타입 : 달달한커피 ------------------------ 메뉴 : 에스프레소 가격 : 1500 분류 : 커피 타입 : 쓴커피 ------------------------ 메뉴를 선택해주세요 [1] 메뉴보기 [2] 메뉴조회 [3] 메뉴추가 [4] 메뉴삭제 [5] 메뉴변경 [6] 종료 6 종료합니다 |
package 커피;
public class MenuInfo {
String name; //음료 이름
int price; //음료 가격
String group; //음료종류
String type; //정보 저장용
//메인에서 아래 값을 받아서 저장하게끔
public MenuInfo(String name, int price, String group, String type) {
this.name = name;
this.price = price;
this.group = group;
this.type = type;
}
}
728x90
'java > 9일차' 카테고리의 다른 글
java_set_221201(9일차) (1) | 2022.12.01 |
---|---|
java_속도비교_221201(9일차) (0) | 2022.12.01 |
java_컬렉션 프레임워크_221201(9일차) (0) | 2022.12.01 |
java_정규식_221201(9일차) (0) | 2022.12.01 |
java_DecimalFormat_221201(9일차) (0) | 2022.12.01 |
Comments