JAVA/HomeWork

HomeWork18 Collection

lavender1122 2023. 12. 30. 14:53
import java.util.ArrayList; //List타입 쓸려면 import 필요
public class HomeWork18 {
	public static void main(String[] args) {
		HomeWork18 obj = new HomeWork18(); 객체 생성 
		obj.process(); // process 메소드 호출
	}
public void process() {
		List<Map> list = dataInput(); //dataInput 메소드 호출해서 list 대입
		int maxSal = getMaxSalary(list); getMaxSalary(list) 호출해서 maxSal 대입
		System.out.println("최대 월급은 " + maxSal);
		
		HashMap map = getDeptSalary2(list); //getDeptSalary2(list) 출력해서 map(HashMap클래스)타입 대입
		// map에 key("기획부")이용해서 value 꺼내서서 출력
        System.out.println("기획부  : "+ map.get("기획부"));
        // map에 key("영업부")이용해서 value 꺼내서서 출력
		System.out.println("영업부  : "+ map.get("영업부"));
         // map에 key("총무부")이용해서 value 꺼내서서 출력
		System.out.println("총무부  : "+ map.get("총무부"));
		printEmp101(list);
		
	}
public List<Map> dataInput(){
//		emp_no  emp_name dept   salary     
//		100   	김기훈	영업부	300
//		101   	홍성범	기획부	350
//		102   	이만수	기획부	500
//		103   	강나미	영업부	350
//		109   	민병철	총무부	250
		
		HashMap map1 = new HashMap(); //map1에 대한 객체 생성
	      map1.put("emp_no","100"); 
	      map1.put("emp_name","김기훈");
	      map1.put("dept","영업부");
	      map1.put("salary","300");
	      
	      HashMap map2= new HashMap(); //map2에 대한 객체 생성
	      map2.put("emp_no","101");
	      map2.put("emp_name","홍성범");
	      map2.put("dept","기획부");
	      map2.put("salary","350");
	      
	      HashMap map3 = new HashMap();//map3에 대한 객체 생성
	      map3.put("emp_no","102");
	      map3.put("emp_name","이만수");
	      map3.put("dept","기획부");
	      map3.put("salary","500");
	      
	      HashMap map4 = new HashMap(); //map4에 대한 객체 생성
	      map4.put("emp_no","103");
	      map4.put("emp_name","강나미");
	      map4.put("dept","영업부");
	      map4.put("salary","350");
	      
	      HashMap map5 = new HashMap();//map5에 대한 객체 생성
	      map5.put("emp_no","109");
	      map5.put("emp_name","민병철");
	      map5.put("dept","총무부");
	      map5.put("salary","250");
          
	      ArrayList list = new ArrayList(); //List 타입 객체 생성
	      list.add(map1); //map1 list 추가
	      list.add(map2); //map2 list 추가
	      list.add(map3); //map2 list 추가
	      list.add(map4); //map2 list 추가
	      list.add(map5); //map2 list 추가
           for (int i = 0; i < list.size(); i++) { //for문 이용해서 list에 들어 갔는지 확인
	  		//List타입 안에 Map타입이 있어서 Map타입으로 확인하기 위해서 강제변환함
            HashMap map = (HashMap) list.get(i); 
	  		System.out.println(map);
            System.out.println("---------------------");
	  		
	  	}
		return list; //list 반환
	}

dataInput()결과값

더보기

for문 풀이

  • i = 0 일때 
    • map = list.get(0) => 첫번째 map 호출
    • ------------------------------------------
  • i = 1 일때
    • map = list.get(1) => 두번째 map 호출
    • -----------------------------------------
  • i = 2 일때
    • map = list.get(2) => 세번째 map호출
    • --------------------------------------------
  •  i = list.size-1 일때(마지막) l 
    • map = ist.get( list.size-1 ) => 마지막 map호출
	public int getMaxSalary(List<Map> l) {
		/*
		 *  전체 직원중에 가장 높은 월급 구하기.
		 */
		int sal = 0; 
		int max = 0;
		for(int i=0; i<l.size(); i++) {
			HashMap map = (HashMap) l.get(i); //0~l 마지막까지 꺼내오기
			//map에서 key("salary") 이용해서 value 값을 salary 대입
            String salary = (String) map.get("salary");
			sal = Integer.parseInt(salary); //sal 문자열 => int타입으로 변환
			
            if(max < sal) { //sal이 max보다 크면
				max = sal; //sal 값이 max에 대입
			}
		}
		return max;
	}

max 결과창

더보기
for(int i=0; i<l.size(); i++) {
			HashMap map = (HashMap) l.get(i);
			System.out.println(map);
            }
map 출력
for(int i=0; i<l.size(); i++) {
			HashMap map = (HashMap) l.get(i);
			String salary = (String) map.get("salary");
			System.out.println(salary);
            }
salary 출력

if문 문제풀이

	int max = 0;
		for(int i=0; i<l.size(); i++) {
			HashMap map = (HashMap) l.get(i);
			String salary = (String) map.get("salary");
			int sal = Integer.parseInt(salary); 
			if(max < sal) {
				max = sal;
			}
		}

for문 : i = 0 ~ l.list마지막까지

i = 0 일때

HashMap map = (HashMap) l.get(0);

String salary = (String) map.get("salary"); => map 첫번째 key("salary") 이용해서 value 값 불려옴

int sal = Integer.parseInt(salary);  =>sal값과 max값 비교하기 위해서 int 타입으로 변환

if(max  < sal){ => max : 0 , sal : 300 true 실행

     max = sal;  =>  sal값-> max값 300 으로 대입

}


i = 1 일때

HashMap map = (HashMap) l.get(1);

String salary = (String) map.get("salary"); => map 두번째 key("salary") 이용해서 value 값 불려옴

int sal = Integer.parseInt(salary);  =>sal값과 max값 비교하기 위해서 int 타입으로 변환

if(max  < sal){ => max : 300, sal : 350 true 실행

     max = sal;  =>  sal값-> max값 350 으로 대입

}


i = 2 일때

HashMap map = (HashMap) l.get(2);

String salary = (String) map.get("salary"); => map 세번째 key("salary") 이용해서 value 값 불려옴

int sal = Integer.parseInt(salary);  =>sal값과 max값 비교하기 위해서 int 타입으로 변환

if(max  < sal){ => max : 350, sal : 500 true 실행

     max = sal;  =>  sal값-> max값 500으로 대입

}


i = 3 일때

HashMap map = (HashMap) l.get(3);

String salary = (String) map.get("salary"); => map 네번째 key("salary") 이용해서 value 값 불려옴

int sal = Integer.parseInt(salary);  =>sal값과 max값 비교하기 위해서 int 타입으로 변환

if(max  < sal){ => max : 500, sal : 350 false 이므로 실행문 실행 안됨 

     max = sal; 

}


i = 4 일때

HashMap map = (HashMap) l.get(4);

String salary = (String) map.get("salary"); => map 다섯번째 key("salary") 이용해서 value 값 불려옴

int sal = Integer.parseInt(salary);  =>sal값과 max값 비교하기 위해서 int 타입으로 변환

if(max  < sal){ => max : 500, sal : 250 false 이므로 실행문 실행 안됨 

     max = sal; 

}

 

 결과적으로 max = 500;

 

public HashMap getDeptSalary2(List<Map> l) {
		HashMap result = new HashMap(); //result에 대한 객체생성
        	for(int i=0; i<l.size(); i++) { // 첫번째 ~ 마지막까지 반복문
			HashMap m = (HashMap) l.get(i); // 
			// m 에서 부서 꺼내기
			String dept = (String) m.get("dept");// 부서만 걸림
			// m 에서 월급 꺼내기
			String salary = (String) m.get("salary");
			int sal = Integer.parseInt(salary);
			// 기획부
			int sum = 0;
			// 맵에 값이 포함되어 있는지
//			if(result.containsKey(dept)) {
//				sum = (int) result.get(dept);
//			}
//			m에서 꺼낸 월급.
			sum+= sal ;
			result.put(dept, sum);
			
		}
		return result;
	}