Map
- key값, value값을 한 쌍으로 관리하는 객체
- key값은 중복을 허용하지 않고, 순서가 없다. (Set의 특징을 갖는다.)
- value값은 중복을 허용한다.
자료 추가하기
- key값이 순서가 없기 때문에 자료를 저장한 순서와 다르게 출력됨
자료 수정하기
- 데이터를 추가할 때 key 값이 같으면 나중에 추가한 값이 저장된다.
자료 삭제하기
- key값이 같은 자료를 찾아서 삭제한다.
- 반환값 : 삭제된 자료의 value값
자료 읽기
- key값과 함께 저장된 value값을 반환한다.
- 해당 key값이 없으면 null 반환한다.
key값의 존재 유무 확인하기
- containsKey(key값) 메소드를 이용한다.
- 지정한 key값이 있으면 true, 없으면 false를 리턴한다.
Map에 저장된 모든 데이터 가져오기 (주로 1, 2번 방법을 사용함)
방법1) keySet() 메소드 이용하기
Map의 모든 key값을 읽어와 Set형으로 반환한다.
Set형 데이터는 순서가 없기 때문에 iterator() 메소드를 이용한다.
방법2) 향상된 for문 이용하기
방법3) value값만 읽어와서 처리하기 -> values() 메소드 이용
방법4) entrySet() 메소드를 이용하기
- Map에는 Entry라는 내부 class가 만들어져 있다.
이 Entry 클래스에는 key라는 변수와 value라는 변수로 구성되어 있다.
Map에서는 이 Entry 클래스를 Set형으로 저장하여 관리한다.
- Entry 객체 전체를 가져오기(가져온 Entry 객체는 Set 형식으로 되어있다.)
entrySet() 메소드를 이용한다.
문제) 이름, 주소, 전화번호를 멤버로 갖는 Phone 클래스를 만들고
Map을 이용하여 전화번호 정보를 관리하는 프로그램을 작성하시오.
(Map의 구조는 key값으로 '이름'을 사용하고 value값으로 'Phone 클래스의 인스턴스'로 한다.)
아래 메뉴의 기능을 구현하시오.
==> 삭제, 검색은 '이름'을 입력받아서 처리한다.
실행 예시)
1. 전화번호 등록
2. 전화번호 수정
3. 전화번호 삭제
4. 전화번호 검색
5. 전화번호 전체 출력
0. 프로그램 종료
-------------------------
번호 입력 >>
풀이 1.
Phone 클래스 생성
실행 결과
──────────────────────────────────────────────
1. 전화번호 등록
2. 전화번호 수정
3. 전화번호 삭제
4. 전화번호 검색
5. 전화번호 전체 출력
0. 프로그램 종료
──────────────────────────────────────────────
번호 입력 >> 1
등록할 정보를 입력해 주세요.
이름 >> 가
전화번호 >> 010-4564-4564
주소 >> 서울시
정상 등록되었습니다.
──────────────────────────────────────────────
1. 전화번호 등록
2. 전화번호 수정
3. 전화번호 삭제
4. 전화번호 검색
5. 전화번호 전체 출력
0. 프로그램 종료
──────────────────────────────────────────────
번호 입력 >> 1
등록할 정보를 입력해 주세요.
이름 >> 나
전화번호 >> 010-7897-7897
주소 >> 경기도
정상 등록되었습니다.
──────────────────────────────────────────────
1. 전화번호 등록
2. 전화번호 수정
3. 전화번호 삭제
4. 전화번호 검색
5. 전화번호 전체 출력
0. 프로그램 종료
──────────────────────────────────────────────
번호 입력 >> 5
번호 이름 전화번호 주소
──────────────────────────────────────────────
1 가 010-4564-4564 서울시
2 나 010-7897-7897 경기도
──────────────────────────────────────────────
1. 전화번호 등록
2. 전화번호 수정
3. 전화번호 삭제
4. 전화번호 검색
5. 전화번호 전체 출력
0. 프로그램 종료
──────────────────────────────────────────────
번호 입력 >> 4
검색할 이름을 입력해 주세요 : 가
번호 이름 전화번호 주소
──────────────────────────────────────────────
1 가 010-4564-4564 서울시
──────────────────────────────────────────────
1. 전화번호 등록
2. 전화번호 수정
3. 전화번호 삭제
4. 전화번호 검색
5. 전화번호 전체 출력
0. 프로그램 종료
──────────────────────────────────────────────
번호 입력 >> 2
수정할 이름을 입력해 주세요 : 가
수정할 전화번호를 입력해 주세요 : 010-1231-1231
수정할 주소를 입력해 주세요 : 대전시
──────────────────────────────────────────────
1. 전화번호 등록
2. 전화번호 수정
3. 전화번호 삭제
4. 전화번호 검색
5. 전화번호 전체 출력
0. 프로그램 종료
──────────────────────────────────────────────
번호 입력 >> 5
번호 이름 전화번호 주소
──────────────────────────────────────────────
1 가 010-1231-1231 대전시
2 나 010-7897-7897 경기도
──────────────────────────────────────────────
1. 전화번호 등록
2. 전화번호 수정
3. 전화번호 삭제
4. 전화번호 검색
5. 전화번호 전체 출력
0. 프로그램 종료
──────────────────────────────────────────────
번호 입력 >> 3
삭제할 이름을 입력해 주세요 : 나
'나'의 정보가 삭제되었습니다.
──────────────────────────────────────────────
1. 전화번호 등록
2. 전화번호 수정
3. 전화번호 삭제
4. 전화번호 검색
5. 전화번호 전체 출력
0. 프로그램 종료
──────────────────────────────────────────────
번호 입력 >> 5
번호 이름 전화번호 주소
──────────────────────────────────────────────
1 가 010-1231-1231 대전시
──────────────────────────────────────────────
1. 전화번호 등록
2. 전화번호 수정
3. 전화번호 삭제
4. 전화번호 검색
5. 전화번호 전체 출력
0. 프로그램 종료
──────────────────────────────────────────────
번호 입력 >> 0
프로그램을 종료합니다.
풀이 2.
Phone 클래스 생성
Properties
- Properties 객체는 Map보다 축소된 기능의 객체라고 할 수 있다.
- Map은 key값과 value값에 모든 형태의 객체를 사용할 수 있지만,
Properties 객체는 key와 value에 String만 사용할 수 있다.
- Map은 put(), get() 메소드로 데이터를 입출력 하지만
Properties는 setProperty(), getProperty() 메소드를 통하여
입출력 한다.
- Properties는 데이터를 파일로 입출력할 수 있다.
문제) 호텔 객실을 관리하는 프로그램을 작성하시오.
조건1) 호텔 객식을 나타내는 Room클래스는 방번호, 방종류, 투숙객이름 필드로 구성되어 있고
방번호와 방종류는 다음과 같다.
- 201~209 : 싱글룸
- 301~309 : 더블룸
- 401~409 : 스위트룸
조건2) 전체 객실 관리는 Map을 이용한다.
(Map의 key값은 방번호로 하고 value값은 Room의 인스턴스로 한다.)
생성자에서는 방번호와 방종류를 초기화한다.
구현할 기능
1. 체크인 2. 체크아웃 3. 객실상태 4. 업무종료
실행 결과
*********************************************
호텔문을 열었습니다. 어서오십시오.
*********************************************
─────────────────────────────────────────────
어떤 업무를 하시겠습니까?
1.체크인 2.체크아웃 3.객실상태 4.업무종료
─────────────────────────────────────────────
선택 >> 1
─────────────────────────────────────────────
체크인 작업
─────────────────────────────────────────────
* 201 ~ 209 : 싱글룸
* 301 ~ 309 : 더블룸
* 401 ~ 409 : 스위트룸
─────────────────────────────────────────────
방 번호 입력 >> 101
101호 객실은 존재하지 않습니다.
─────────────────────────────────────────────
어떤 업무를 하시겠습니까?
1.체크인 2.체크아웃 3.객실상태 4.업무종료
─────────────────────────────────────────────
선택 >> 1
─────────────────────────────────────────────
체크인 작업
─────────────────────────────────────────────
* 201 ~ 209 : 싱글룸
* 301 ~ 309 : 더블룸
* 401 ~ 409 : 스위트룸
─────────────────────────────────────────────
방 번호 입력 >> 201
누구를 체크인 하시겠습니까?
이름 입력 >> 홍길동
홍길동님, 체크인이 완료되었습니다.
─────────────────────────────────────────────
어떤 업무를 하시겠습니까?
1.체크인 2.체크아웃 3.객실상태 4.업무종료
─────────────────────────────────────────────
선택 >> 3
─────────────────────────────────────────────
현재 객실 상태
─────────────────────────────────────────────
방 번호 방 종류 투숙객 이름
─────────────────────────────────────────────
201 싱글룸 홍길동
202 싱글룸 -
203 싱글룸 -
204 싱글룸 -
205 싱글룸 -
206 싱글룸 -
207 싱글룸 -
208 싱글룸 -
209 싱글룸 -
301 더블룸 -
302 더블룸 -
303 더블룸 -
304 더블룸 -
305 더블룸 -
306 더블룸 -
307 더블룸 -
308 더블룸 -
309 더블룸 -
401 스위트룸 -
402 스위트룸 -
403 스위트룸 -
404 스위트룸 -
405 스위트룸 -
406 스위트룸 -
407 스위트룸 -
408 스위트룸 -
409 스위트룸 -
─────────────────────────────────────────────
─────────────────────────────────────────────
어떤 업무를 하시겠습니까?
1.체크인 2.체크아웃 3.객실상태 4.업무종료
─────────────────────────────────────────────
선택 >> 2
─────────────────────────────────────────────
체크아웃 작업
─────────────────────────────────────────────
체크아웃 할 방의 번호를 입력해 주세요.
방 번호 >> 203
203호 객실에는 체크인 한 고객이 없습니다.
─────────────────────────────────────────────
어떤 업무를 하시겠습니까?
1.체크인 2.체크아웃 3.객실상태 4.업무종료
─────────────────────────────────────────────
선택 >> 2
─────────────────────────────────────────────
체크아웃 작업
─────────────────────────────────────────────
체크아웃 할 방의 번호를 입력해 주세요.
방 번호 >> 201
201호 객실의 홍길동님
체크아웃을 완료하였습니다.
─────────────────────────────────────────────
어떤 업무를 하시겠습니까?
1.체크인 2.체크아웃 3.객실상태 4.업무종료
─────────────────────────────────────────────
선택 >> 3
─────────────────────────────────────────────
현재 객실 상태
─────────────────────────────────────────────
방 번호 방 종류 투숙객 이름
─────────────────────────────────────────────
201 싱글룸 -
202 싱글룸 -
203 싱글룸 -
204 싱글룸 -
205 싱글룸 -
206 싱글룸 -
207 싱글룸 -
208 싱글룸 -
209 싱글룸 -
301 더블룸 -
302 더블룸 -
303 더블룸 -
304 더블룸 -
305 더블룸 -
306 더블룸 -
307 더블룸 -
308 더블룸 -
309 더블룸 -
401 스위트룸 -
402 스위트룸 -
403 스위트룸 -
404 스위트룸 -
405 스위트룸 -
406 스위트룸 -
407 스위트룸 -
408 스위트룸 -
409 스위트룸 -
─────────────────────────────────────────────
─────────────────────────────────────────────
어떤 업무를 하시겠습니까?
1.체크인 2.체크아웃 3.객실상태 4.업무종료
─────────────────────────────────────────────
선택 >> 4
안녕히 가십시오.
'JAVA' 카테고리의 다른 글
[JAVA] 하나의 스레드와 여러 개의 스레드가 수행되는 시간 비교하기 (0) | 2021.07.30 |
---|---|
[JAVA] 멀티 스레드(multi Thread) - 1 (0) | 2021.07.29 |
[JAVA] enum(열거형) (0) | 2021.07.29 |
[JAVA] equals() 메소드 , hashCode() 메소드 (0) | 2021.07.27 |
[JAVA] 컬렉션 프레임워크 - Set (0) | 2021.07.26 |