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 반환
}
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;
}
for(int i=0; i<l.size(); i++) {
HashMap map = (HashMap) l.get(i);
System.out.println(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);
}
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;
}
'JAVA > HomeWork' 카테고리의 다른 글
호텔운영프로그램 Map타입 (0) | 2024.01.23 |
---|---|
학생리스트정렬 Comparable과 Comparator (0) | 2024.01.20 |
HomeWork8 2중배열, 2중for문 (0) | 2024.01.20 |
HomeWork 11 class (0) | 2024.01.20 |
HomeWork16 (0) | 2023.12.27 |