JAVA/JAVA BASIC

3/28 Homework

아잠만_ 2024. 3. 28. 12:26
package kr.or.ddit.homework;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class HomeWork18 {
	public static void main(String[] args) {
		HomeWork18 hw = new HomeWork18();
		hw.process();
	}

	public void process() {
		List<Map> list = dataInput();
		print(list);
		int max = maxSalary(list);
		System.out.println();
		System.out.println("최대 월급 : " + max);
		
        System.out.println();
		System.out.println("각 부서별 월급 총합");
		sum(list);
		
        System.out.println();
		System.out.println("emp_no가 101인 사람 정보");
		search(list);

	}

	// 1. 최대 월급 구하기
	public int maxSalary(List<Map> list) {
		int max = 0;
		for (Map map : list) {
        	// 급여키워드 값이 max보다 큰 값 저장 (비교를 위해 int로 타입변경할것)
			if ((int) map.get("salary") > max) {
				max = (int) map.get("salary");
			}
		}
		return max;
	}

	// 2. 각 부서별 월급 총합
	public Map<String,Integer> sum(List<Map> list) {
		// 부서별 월급을 저장해주기 위해 map 생성
		// sum 이름을 가진 map변수에 key = 부서이름 , value = 급여 저장
		Map<String,Integer> sum = new HashMap();
		for (Map map : list) {
			// 부서 이름이 맵에 포함되어있을 때
			if(sum.containsKey(map.get("dept"))) {
				// 기존에 있던 맵을 삭제한 후에 급여값을 sum의 remove값에 저장 (sum의 dept 키워드의 value 값은 급여합계) 
				int remove = sum.remove(map.get("dept"));
				//  다시 dept 키워드와 value값인 급여+합계를 저장
				sum.put((String) map.get("dept"),(int) (map.get("salary"))+remove);
			} else {
				// 포함이 되지 않았을 때 dept 키워드와 value값인 급여를 저장
				sum.put((String) map.get("dept"),(int) (map.get("salary")));
			}
		}
		// map 출력 EntrySet 사용 (배운거 아님)
//		for(Entry<String, Integer> entrySet : sum.entrySet()) {
//			System.out.println(entrySet.getKey()+ "\t"+entrySet.getValue());
//		}
		System.out.println(sum);
		return sum;
	}

	// 3. emp_no 101인 사람의 정보 출력하기
	public void search(List<Map> list) {
		for (Map map : list) {
			// emp_no키워드를 가지고 있는 map 찾기
			if ((int) map.get("emp_no") == 101) {
				System.out.println(map.get("emp_no") + "\t" + map.get("emp_name") + "\t" + map.get("dept") + "\t"
						+ map.get("salary"));
			}
		}
	}

	public void print(List<Map> list) {
		for (Map map : list) {
			System.out.println(
					map.get("emp_no") + "\t" + map.get("emp_name") + "\t" + map.get("dept") + "\t" + map.get("salary"));
		}
	}

	// 정보입력
	public List<Map> dataInput() {
//		emp_no	emp_name	dept	salary
//		100	김기훈		영업부	300
//		101	홍성범		기획부	350
//		102	이만수		기획부	500
//		103	강나미		영업부	350
//		109	민병철		총무부	250
		Map p1 = new HashMap();
		p1.put("emp_no", 100);
		p1.put("emp_name", "김기훈");
		p1.put("dept", "영업부");
		p1.put("salary", 300);

		Map p2 = new HashMap();
		p2.put("emp_no", 101);
		p2.put("emp_name", "홍성범");
		p2.put("dept", "기획부");
		p2.put("salary", 350);

		Map p3 = new HashMap();
		p3.put("emp_no", 102);
		p3.put("emp_name", "이만수");
		p3.put("dept", "기획부");
		p3.put("salary", 500);

		Map p4 = new HashMap();
		p4.put("emp_no", 103);
		p4.put("emp_name", "강나미");
		p4.put("dept", "영업부");
		p4.put("salary", 350);

		Map p5 = new HashMap();
		p5.put("emp_no", 109);
		p5.put("emp_name", "민병철");
		p5.put("dept", "총무부");
		p5.put("salary", 250);

		List list = new ArrayList();
		list.add(p1);
		list.add(p2);
		list.add(p3);
		list.add(p4);
		list.add(p5);

		return list;
	}
}