열심히 끝까지

40강 컬렉션 프레임 웍 연습1 / 고객 관리 프로그램 본문

멘토씨리즈 JAVA

40강 컬렉션 프레임 웍 연습1 / 고객 관리 프로그램

노유림 2022. 5. 9. 02:34

<복습>
HashMap?
       : key와 Value값으로 데이터를 저장하는 형태
특징
       - Map 인터페이스의 한 종류
       - Map의 모든 속성을 갖고 있으며 저장 방식 동일
       - 해싱(Hashing)이라는 검색 알고리즘 사용
       - key의 중복은 허용하지 않으나 value의 중복은 허용
<HashMap 구조>


<HashMap 메서드>



40-1 ) HashMap을 사용한 실습
고객관리 프로그램
HashMap을 활용하여,
사용자의 이름과 전화번호를 저장하는 전화번호부를 만들어보자

<HashMap 메서드 정리>
1. 생성 : HashMap 변수명 = new HashMap();
2. 삽입 : 변수명.put(key, value
3. 가져오기 : 변수명.get(key)
4. key 존재 확인 : 변수명.containsKey(key)

<실습> PhoneBookMain
---------------------------------
- 아래의 내용은 메서드를 활용해서 구현할 예정
<전화번호부 기능>
1. 고객 저장
2. 고객 검색
3. 전체 보기
4. 끝내기


----------------------------------
public class PhoneBookMain{
       static Scanner sc = new Scanner(System.in);
       static HashMap hm = new HashMap();

모든 메서드에서 알아야 할 필드 : 클래스 영역 내에서 생성
- main은 static 영역이므로 main 영역에서도 사용하기 위해 static 변수로 지정

----------------------------------
public static void insert(){
       System.out.print("저장할 고객의 이름 : ");
       String insertName = sc.next();
       if(hm.containKey(insertName)){
              System.out.println("이미 존재하는 사람이므로 저장할 수 없습니다.");
              return;
       }
       else {
              System.out.print("저장할 고객 번호 : ");
              String insertPhone = sc.next();
              hm.put(insertName, insertPhone);
              System.out.println("저장이 완료되었습니다.");
       }

insert() : 고객 정보 저장
- 저장할 고객의 이름을 입력받아 
   hashmap에 존재하지 않을 경우 저장 가능


--------------------------------
public static void search() {
       System.out.print("검색할 이름 : ");
       String searchName = sc.next();
       if(hm.containKey(searchName)){
              System.out.println("검색 완료!");
              System.out.println("검색된 전화번호 : " + hm.get(searchName));
       }
       else {
              System.out.println("존재하지 않는 이름입니다.");
       }
}
search() : 고객 정보 검색
- 검색할 고객의 이름을 입력받아, 
   hashmap에 존재할 경우 검색 가능


-------------------------------
public static void show() {
       Set ketSet = hm.keySet();
       Iterator i = keySet.iterator();
       System.out.println("-----전체 고객 조회-----");
       while(i.hasNext()) {
              String curName = (String)i.next();
              System.out.println("name : " + curName + ", Phone : " + hm.get(curName));
       }
}
show() : 고객 전체 출력
- Iterator을 가져오기 위해 먼저
   hashmap의 key들을 set으로 가져온다.
- 가져온 keySet으로 iterator을 선언 후,
   다음 요소가 존재할 때까지 반복해서 전체 요소를 가져온다.