자바 HashMap

조수경·2021년 10월 8일
0

JAVA

목록 보기
23/26

HashMap은 인터페이스로 상속받은 메서드(인덱스의 개념이 아니라 순서도 없음)
Object put(Object key, Object value): 지정된 키와 값을 저장한다.
Object remove(Object key): 지정된 키로 저장된 값을 제거한다.
Object get(Object key): 지정된 키의 값(키의 값이 없으면 null)을 반환한다.
Set keySet(): 저장된 모든 키를 모아서 Set으로 반환한다.

HashMap 객체 생성
HashMap<String, Object> map = new HashMap<String, Object>();
//키와 값의 제내릭을 2개 지정해준다.
//값의 타입을 아무거나 저장하고 싶을때 Object 사용

값 저장(키, 값) - 키는 string으로 같지만 값은 다름
map.put("age", 10);
map.put("name", "홍길동");
map.put("date", new Date());//날짜 값 형식 표현
System.out.println(map);
// 결과: {date=Fri Oct 08 10:27:15 KST 2021, name=홍길동, age=10}
// 저장한 순서대로 출력되는 게 아님

수정할때의 메서드는 딱히 없어서 put 사용
map.put("name", "이순신");
//같은 키로 다시한번 저장하기(기존 값 덮어씀): 키 하나에 하나의 값만 저장 가능하기 때문이다.
System.out.println(map);
//결과: {date=Fri Oct 08 10:29:54 KST 2021, name=이순신, age=10}

지우기
map.remove("age");
System.out.println(map);
//결과: {date=Fri Oct 08 10:30:26 KST 2021, name=이순신}

값 뽑아내기
Object value = map.get("name");
//값을 Object타입 변수로 하여 String을 사용할 수 없다.
System.out.println(value);
System.out.println(((String)value).substring(0,1));
//String 타입도 사용하고 싶다면? value만 형변환하기.
//첨부터 형변환하기 - 또다른 형변환 방법
String str = (String)map.get("name");

Set keys: HashMap은 인덱스가 아니라 키로 저장함. 하지만 내가 만들지 않앗을때는 무슨 키가 들었는지 모름 그럴때 사용
Set keys = map.keySet(); //키를 string으로 지정했기 때문
//반복문을 사용하여 값 꺼내야됨 하지만 set은 값을 꺼내는 메서드가 없음 -> 향상된 for문 사용
for (String key : keys) {
//:뒤에 어리, 셋이옴 String key는 keys에서 값을 꺼냈을때 저장할 변수(저장하고, 꺼내고){실행}
System.out.println(key+" : "+map.get(key));
}

map은 테이블의 구조를 표현할때 주로 사용

컬럼명: 키, 해시맵은 한 행을 표현 가능함
-> 테이블은 여러줄임 그래서 테이블 정체를 표현하기 위해서 어리를 사용해야함
(어리에 해시맵 = 테이블 구조)

JOBS 테이블

//한줄 저장
HashMap<String, Object> job = new HashMap<String, Object>();
job.put("JOB_ID","AD_PRES");
job.put("JOB_TITLE","President");
job.put("MIN_SALARY",20080);
job.put("MAX_SALARY",40080);

     ArrayList<HashMap<String, Object>> jobs = new ArrayList<HashMap<String, Object>>();
     jobs.add(job);
     //한줄 더 저장
     job = new HashMap<>();
     job.put("JOB_ID","AD_VP");
     job.put("JOB_TITLE","Administration Vice President");
     job.put("MIN_SALARY",15000);
     job.put("MAX_SALARY",30080);
     
     jobs.add(job);
     System.out.println(jobs);

lprod 테이블 만들기

     HashMap<String, Object> lprod = new HashMap<String, Object>();
     lprod.put("LPROD_ID", 1);
     lprod.put("LPROD_GU", "P101");
     lprod.put("LPROD_NM","컴퓨터제품");
     
     ArrayList<HashMap<String, Object>> lprods = new ArrayList<HashMap<String, Object>>();
     lprods.add(lprod);
     
     lprod = new HashMap<>();
     lprod.put("LPROD_ID", 2);
     lprod.put("LPROD_GU", "P102");
     lprod.put("LPROD_NM","전자제품");
     
     lprods.add(lprod);
     
     lprod = new HashMap<>();
     lprod.put("LPROD_ID", 3);
     lprod.put("LPROD_GU", "P201");
     lprod.put("LPROD_NM","여성캐주얼");
     
     lprods.add(lprod);
     
     lprod = new HashMap<>();
     lprod.put("LPROD_ID", 4);
     lprod.put("LPROD_GU", "P202");
     lprod.put("LPROD_NM","남성캐주얼");
     
     lprods.add(lprod);
     
     lprod = new HashMap<>();
     lprod.put("LPROD_ID", 5);
     lprod.put("LPROD_GU", "P301");
     lprod.put("LPROD_NM","피혁잡화");
     
     lprods.add(lprod);

     lprod = new HashMap<>();
     lprod.put("LPROD_ID", 6);
     lprod.put("LPROD_GU", "P302");
     lprod.put("LPROD_NM","화장품");
     
     lprods.add(lprod);
     
     lprod = new HashMap<>();
     lprod.put("LPROD_ID", 7);
     lprod.put("LPROD_GU", "P401");
     lprod.put("LPROD_NM","음반/CD");
     
     lprods.add(lprod);
     
     lprod = new HashMap<>();
     lprod.put("LPROD_ID", 8);
     lprod.put("LPROD_GU", "P402");
     lprod.put("LPROD_NM","도서");
     
     lprods.add(lprod);
     
     lprod = new HashMap<>();
     lprod.put("LPROD_ID", 9);
     lprod.put("LPROD_GU", "P403");
     lprod.put("LPROD_NM","문구류");
     lprods.add(lprod);
     
     //출력
     System.out.println("\tLPROD_ID   LPROD_GU   LPROD_NM");
     for (int i = 0; i < lprods.size(); i++) {
		System.out.print("\t"+lprods.get(i).get("LPROD_ID"));
		System.out.print("\t"+lprods.get(i).get("LPROD_GU"));
		System.out.print("\t"+lprods.get(i).get("LPROD_NM"));
		System.out.println();
profile
신입 개발자 입니다!!!

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN