1
import java.util.HashMap;
import java.util.Iterator;
/**
* HashMap
* key 와 value 로 이루어짐
* key 값은 중복을 허용하지 않고 순서가 보장되지 않음.
*
* Map 타입의 컬렉션
*
* 주요 메소드
* .put(key, value); : 데이터 입력 key 값은 중복되지 않음. value는 중복 될 수 있음.
* .get(key) : 입력 받은 value 값을 key 값을 통해 꺼내 올 수 있음.
* .keySet() : key 로 이루어진 hashSet 값을 가져옴.
*
*
*/
public class MapExample {
public static void main(String[] args) {
/*
* 제네릭 정보
* HashMap<key, value>
*
*/
// 타입을<> 명확히 지정해주면 캐스팅 해줄 필요x, Object로 선언할수도 있으나 꺼낼때마다 찾아봐야함
HashMap<String, Integer> map = new HashMap();
map.put("홍길동", 95);
map.put("이순신", 75);
map.put("정몽주", 90);
map.put("이성계", 83);
// System.out.println(map);
// 홍길동의 점수 (각 타입을 캐스팅해줘야함)
// int score = (int)map.get("홍길동");
// 이순신의 점수 넣은 타입 그대로 꺼낼 것.
// double d_score = (double)map.get("이순신");
// System.out.println(score);
// System.out.println(d_score);
//기존에 입력된 데이터를 다시 입력하면 덮어씌워짐.
map.put("홍길동", 60);
System.out.println(map);
//데이터를 순차적으로 꺼내오는 역할 Iterator (여러개의 데이터를 한번에 뽑아올때)
//hasNext=값이 있냐?
//타입이 명확할땐 제네릭 선언해주는게 좋음
Iterator<String> it = map.keySet().iterator();
while(it.hasNext()) {
String key = it.next();
// String key = (String) it.next();
int value = (int) map.get(key);
System.out.println(key+", "+value);
}
}
}
2
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
public class MapExample2 {
public static void main(String[] args) {
// emp_no, emp_name, dept, tel
// 100 장승수 영업부 010-8422-8117
/*
* 해쉬맵에 각각
* key emp_no, emp_name, dept, tel
* value 100 ,장승수 , 영업부, 010-8422-8117
* 101 ,홍성범, 기획부, 010-7562-3217
*
* 입력해 보기()
* .put(key , value);
*
*/
HashMap map = new HashMap();
map.put("emp_no" , "100");
map.put("emp_name" , "장승수");
map.put("emp_dept" , "영업부");
map.put("emp_tel" , "010-8422-8117");
HashMap map2 = new HashMap();
map2.put("emp_no" , "101");
map2.put("emp_name" , "홍성범");
map2.put("dept" , "기획부");
map2.put("tel" , "010-7562-3217");
// map에 emp_no 값 가져오기
String emp_no = (String)map.get("emp_no");
System.out.println(emp_no);
// map2에 emp_name 값 가져오기
String emp_name = (String)map2.get("emp_name");
System.out.println(emp_name);
// 리스트에 맵 담아볼 것
ArrayList l = new ArrayList();
// 리스트 값 더하는 방법 .add();
l.add(map);
l.add(map2);
// tel 값 꺼내보기.
String tel = (String)map.get("emp_tel");
System.out.println(tel);
String tel2 = (String)map2.get("tel");
System.out.println(tel2);
// 전체 꺼내보기.
System.out.println("전체 출력");
Iterator it = map.keySet().iterator();
while(it.hasNext()) {
String key = (String) it.next();
String value = (String) map.get(key);
System.out.println(key+", "+value);
}
}
}
3
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class MapExample3 {
public static void main(String[] args) {
MapExample3 me = new MapExample3();
List<Map> l = me.dataInput();
int maxSalary = me.getMaxSalary(l);
System.out.println("직원의 최대 월급은: "+maxSalary);
List addDept = me.getAddDept(l);
me.printEmp_no103(l);
}
public List<Map> dataInput(){
// emp_no, emp_name, dept, tel, salary
// 100 장승수 영업부 010-8422-8117 300
// 101 홍성범 기획부 010-7562-3217 350
// 102 이만수 기획부 010-5562-6677 500
// 103 강나미 영업부 010-4442-5614 350
// 109 민병철 총무부 010-2542-8211 250
/*
* 5개의 맵을 각각 선언 및 데이터 입력
*/
HashMap m1 = new HashMap();
m1.put("emp_no", "100");
m1.put("emp_name", "장승수");
m1.put("dept", "영업부");
m1.put("tel", "010-8422-8117");
m1.put("salary", "300");
HashMap m2 = new HashMap();
m2.put("emp_no", "101");
m2.put("emp_name", "홍성범");
m2.put("dept", "기획부");
m2.put("tel", "010-5562-6677");
m2.put("salary", "350");
HashMap m3 = new HashMap();
m3.put("emp_no", "102");
m3.put("emp_name", "이만수");
m3.put("dept", "기획부");
m3.put("tel", "010-5562-6677");
m3.put("salary", "500");
HashMap m4 = new HashMap();
m4.put("emp_no", "103");
m4.put("emp_name", "강나미");
m4.put("dept", "영업부");
m4.put("tel", "010-4442-5614");
m4.put("salary", "350");
HashMap m5 = new HashMap();
m5.put("emp_no", "109");
m5.put("emp_name", "민병철");
m5.put("dept", "총무부");
m5.put("tel", "010-2542-8211");
m5.put("salary", "250");
/*
* 5개의 맵을 리스트를 선언해 입력 할 것.
*/
ArrayList l = new ArrayList();
l.add(m1);
l.add(m2);
l.add(m3);
l.add(m4);
l.add(m5);
/*
* 리스트에 각 맵을 입력한후 리턴 해볼 것.
*/
return l;
}
public int getMaxSalary(List<Map> l) {
// 제일 높은 월급.
int max = 0;
for (Map map : l) {
// 월급인 salary 문자열 값 꺼내기
String salary = (String)map.get("salary");
// 문자열들 비교를 위해 숫자로 변환하기
int salaryInt = Integer.parseInt(salary);
// 맥스 값이랑 비교해서 더 크다면 max 값에 저장하기
if(salaryInt > max) {
max = salaryInt;
}
}
return max;
}
public List getAddDept(List<Map> l) {
// 각 부서별 월급 합 구하기.
ArrayList salSum = new ArrayList();
HashMap sum = new HashMap();
for (Map map : l) {
String dept = (String) map.get("dept");
String salary = (String) map.get("salary");
int salaryInt = Integer.parseInt(salary);
if(sum.containsKey(dept)) salaryInt +=(int) sum.get(dept);
sum.put(dept, salaryInt);
}
System.out.println(sum);
/*
* sum 값 전체 꺼내서 salSum 넣어 보기
*/
Iterator it = sum.keySet().iterator();
while(it.hasNext()) {
String key = (String) it.next();
int value = (int) sum.get(key);
salSum.add(value);
}
return salSum;
}
private void printEmp_no103(List<Map> l) {
for(int i = 0; i<l.size(); i++) {
Map m = l.get(i);
// no_103인 사람 찾기
String emp_no = (String) m.get("emp_no");
// no_103이 아니라면 continue로 다음 포문 진행하기.
if(!emp_no.equals("103")) continue;
// 모든 정보 출력하기.
Iterator it = m.keySet().iterator();
System.out.println("-----------------");
while(it.hasNext()) {
String key = (String) it.next();
String value = (String) m.get(key);
System.out.println(value+"\t");
}
System.out.println();
System.out.println("----------------");
}
}
}
4
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class MapExample4 {
public static void main(String[] args) {
MapExample4 me = new MapExample4();
List<Map> l = me.dataInput();
// me.printAll(l);
int min = me.getMin(l, "5961");
System.out.println("5961번의 총 주차 시간은"+ min +"분");
int pay = me.pay(min);
System.out.println("5961번의 총 주차 요금은"+ pay +"원");
}
public int pay(int min) {
// 기본 시간(분) 기본 요금(원) 단위 시간(분) 단위 요금(원)
// 180 5000 10 600
if(min<=180) return 5000;
// 기본 시간 제외
min = min-180;
// 10분 단위 계산
min = min/10;
return 5000+min*600;
}
// 주차장에 얼마나 머물렀는지
public int getMin(List<Map> l, String number) {
// 선택된 차량 값 담아보기.
//<>에 Map을 쓰면 향상된 for문 사용 가능
ArrayList<Map> selectList = new ArrayList();
// list 에서 for 문을 이용해서 map 값 꺼내기
for (Map m : l) {
m.get("차량 번호");
String car_no = (String) m.get("차량 번호");
// 차량 번호 값이 number 랑 같은지 비교하기
if (!car_no.equals(number)) {
// 아닐 경우 continue 하기
continue;
}
selectList.add(m);
}
String in = "";
String out = "";
int result = 0;
for (int i = 0; i < selectList.size(); i++) {
Map m = selectList.get(i);
String time = (String) m.get("시각");
// System.out.println(time);
String inout = (String) m.get("내역");
// 내역 이 입차라면 in 에 시각 입력
if(inout.equals("입차")) in = time;
// 내역이 출차라면 out 에 시각 입력
if(inout.equals("출차")) {
out = time;
// 내역이 출차 일 경우 주차시간 구하기.
int t1 = getTime(in);
int t2 = getTime(out);
result += t2-t1;
// System.out.println(result);
}
}
return result;
}
public int getTime(String t) {
String[] token = t.split(":");
// toekn[0] 값 숫자로 변환해서 넣기
int hour= Integer.parseInt(token[0]);
// toekn[1] 값 숫자로 변환해서 넣기
int min= Integer.parseInt(token[1]);
return hour*60 + min;
}
public void printAll(List<Map<String, String>> l) {
/*
* 전체 값 출력 해볼 것 1. for문으로 리스트 꺼냄 2. 이터레이터로 전체출력
*/
for (int i = 0; i < l.size(); i++) {
Map<String, String> m = l.get(i);
Iterator<String> it = m.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
String value = m.get(key);
// String key = (String) it.next();
// String value = (String) m.get(key);
System.out.print(key + ", " + value + "\t");
}
System.out.println();
}
}
public List<Map> dataInput() {
// 시각 차량 번호 내역
// 05:34 5961 입차
// 06:00 0000 입차
// 06:34 0000 출차
// 07:59 5961 출차
// 07:59 0148 입차
// 18:59 0000 입차
// 19:09 0148 출차
// 22:59 5961 입차
// 23:00 5961 출차
HashMap m1 = new HashMap();
m1.put("시각", "05:34");
m1.put("차량 번호", "5961");
m1.put("내역", "입차");
HashMap m2 = new HashMap();
m2.put("시각", "06:00");
m2.put("차량 번호", "0000");
m2.put("내역", "입차");
HashMap m3 = new HashMap();
m3.put("시각", "06:34");
m3.put("차량 번호", "0000");
m3.put("내역", "출차");
HashMap m4 = new HashMap();
m4.put("시각", "07:59");
m4.put("차량 번호", "5961");
m4.put("내역", "출차");
HashMap m5 = new HashMap();
m5.put("시각", "07:59");
m5.put("차량 번호", "0148");
m5.put("내역", "입차");
HashMap m6 = new HashMap();
m6.put("시각", "18:59");
m6.put("차량 번호", "0000");
m6.put("내역", "입차");
HashMap m7 = new HashMap();
m7.put("시각", "19:09");
m7.put("차량 번호", "0148");
m7.put("내역", "출차");
HashMap m8 = new HashMap();
m8.put("시각", "22:59");
m8.put("차량 번호", "5961");
m8.put("내역", "입차");
HashMap m9 = new HashMap();
m9.put("시각", "23:00");
m9.put("차량 번호", "5961");
m9.put("내역", "출차");
ArrayList l = new ArrayList();
l.add(m1);
l.add(m2);
l.add(m3);
l.add(m4);
l.add(m5);
l.add(m6);
l.add(m7);
l.add(m8);
l.add(m9);
return l;
}
}
'초급과정 > java' 카테고리의 다른 글
[Java] 주사위 2개를 1000번 던져서 두 개의 합(2~12) 갯수를 카운트해서 출력하기 (0) | 2023.10.25 |
---|---|
[Java] 프로그래머스 문제풀이 LV.0) 문자열뒤집기 (0) | 2023.10.23 |
[Java] 스태틱 (Static) (0) | 2023.10.19 |
[Java] 11일차. 싱글톤(Singleton) (0) | 2023.10.19 |
[Java] while문 정수 입력받기 , 윤년 평년 구하기 (0) | 2023.10.19 |