gwooden_코린이

java_lterator_221201(9일차) 본문

java/9일차

java_lterator_221201(9일차)

gwooden22 2022. 12. 1. 15:42
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());
		}
		
	}
	


}

컨트롤 + 1번 누르고


		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