'자바(Pattern&자료구조)/HashMap 클래스'에 해당되는 글 1건

  1. 2017.03.16 1. Java HashMap 개념 및 사용방법

[ 1. Java HashMap 개념 및 사용방법 ]

 

1. 정의

    - HashMap 클래스는 Map 인터페이스 기반의 구현 클래스 이다.

    - 그리고 해쉬 테이블 자료 구조를 표현한 클래스 이다.

    - keyvalue를 쌍으로 보관하는 클래스 이다.

    - HashMap 형식 변수 선언 및 개체 생성할 때는 제네릭 형식 인자로 키와 값을 명시하여 표현 한다.

 

2. HashMap 선언

 

 HashMap<String, Book> book_dic = new HashMap<String, Book>();

 

3. HashMap 값 추가 

    - put() 메소드 이용

 

 book_dic.put(isbn, book); 

 

4. HashMap 값 존재 확인

    - containsKey() 메소드 이용

 

 if(book_dic.containsKey(isbn)){

   System.out.println("이미 존재하는 ISBN입니다.");

   return;

 }

 

5. HashMap 한건 삭제

    - remove() 메소드 이용

 

  if(book_dic.containsKey(isbn)){

    book_dic.remove(isbn);

    System.out.println("삭제하였습니다.");

 }else{

     System.out.println("존재하지 않습니다.");

 }

 

6. 특정 Key값 얻기

    - get() 메소드 이용

 

 if(book_dic.containsKey(isbn)){

    Book book = book_dic.get(isbn);

    System.out.println("검색 결과>>"+book.toString());

 }else{

    System.out.println("존재하지 않습니다.");

 }

 

7. 저장된 목록 확인

    - values() 메소드 이용

 

  for(Book book : book_dic.values()){

     System.out.println(book.toString());

 }

 

8. 저장된 Key 목록 얻기

    - keySet() 메소드 이용

 

  for(String isbn : book_dic.keySet()){

     System.out.println(isbn);

 }

 

 

 

 다음 소스는 키를 도서의 ISBN, 값을 도서 개체로 관리하는 프로그램 예제입니다.

 

▷ 소스 3.13 도서 관리 프로그램(HashMap 클래스 이용)

//도서 클래스

public class Book {

        final String isbn;

        String title;

        int price;

        public Book(String isbn, String title,int price){

               this.isbn = isbn;

               this.title = title;

               this.price = price;

        }

        public String ISBN(){

               return isbn;

        }

        public String toString(){

               return String.format("ISBN:%s 이름:%s 가격:%d", isbn, title, price);        }

}

//도서 관리자 클래스

import java.util.HashMap;

import java.util.Scanner;

 

public class BookManager {

        Scanner scan = new Scanner(System.in);

        HashMap<String, Book> book_dic = new HashMap<String, Book>();

        public void Run(){

               int key = 0;

               while((key = selectMenu())!=0){

                       switch(key){

                       case 1: addBook(); break;

                       case 2: removeBook(); break;

                       case 3: searchBook(); break;

                       case 4: listBook(); break;

                       case 5: listISBN(); break;

                       default: System.out.println("잘못 선택하였습니다."); break;

                       }

               }

               System.out.println("종료합니다...");

        }

        int selectMenu(){

               System.out.println("1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료");

               int key = scan.nextInt();

               scan.nextLine();

               return key;

        }

        void addBook(){

               String isbn;           

               System.out.print("추가할 도서 ISBN:");

               isbn = scan.nextLine();

               if(book_dic.containsKey(isbn)){

                       System.out.println("이미 존재하는 ISBN입니다.");

                       return;

               }

               String title;

               int price;

               System.out.print("도서 제목:");

               title = scan.nextLine();

               System.out.print("가격:");

               price = scan.nextInt();

               scan.nextLine();

               Book book = new Book(isbn,title,price);

               book_dic.put(isbn, book);

               System.out.println(book.toString()+" 생성하였습니다."); 

              

        }

        void removeBook(){

               String isbn;           

               System.out.print("삭제할 도서 ISBN:");

               isbn = scan.nextLine();

               if(book_dic.containsKey(isbn)){

                       book_dic.remove(isbn);

                       System.out.println("삭제하였습니다.");                 

               }

               else{

                       System.out.println("존재하지 않습니다.");               

               }             

        }

        void searchBook(){

               String isbn;           

               System.out.print("검색할 도서 ISBN:");

               isbn = scan.nextLine();

               if(book_dic.containsKey(isbn)){

                       Book book = book_dic.get(isbn);

                       System.out.println("검색 결과>>"+book.toString());                                           

               }

               else{

                       System.out.println("존재하지 않습니다.");               

               }

        }

        void listBook(){

               System.out.println("도서 목록");

               int cnt = book_dic.size();

               System.out.println("도서 :"+cnt);

               for(Book book : book_dic.values()){

                       System.out.println(book.toString());

               }

        }

        void listISBN(){

               System.out.println("ISBN 목록");

               int cnt = book_dic.size();

               System.out.println("도서 :"+cnt);

               for(String isbn : book_dic.keySet()){

                       System.out.println(isbn);

               }

        }

}

//ISBN 키로 도서 검색(HashMap 클래스 이용)

public class Program {

        public static void main(String[] args){

               BookManager bm = new BookManager();

               bm.Run();

        }

}

 

▷ 소스 3.13 실행 결과

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

1

추가할 도서 ISBN:1234

도서 제목:Java

가격:2000

ISBN:1234 이름:Java 가격:2000 생성하였습니다.

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

1

추가할 도서 ISBN:4321

도서 제목:C언어

가격:5000

ISBN:4321 이름:C언어 가격:5000 생성하였습니다.

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

1

추가할 도서 ISBN:3421

도서 제목:자료구조

가격:2000

ISBN:3421 이름:자료구조 가격:2000 생성하였습니다.

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

4

도서 목록

도서 :3

ISBN:1234 이름:Java 가격:2000

ISBN:4321 이름:C언어 가격:5000

ISBN:3421 이름:자료구조 가격:2000

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

5

ISBN 목록

도서 :3

1234

4321

3421

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

3

검색할 도서 ISBN:1234

검색 결과>>ISBN:1234 이름:Java 가격:2000

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

2

삭제할 도서 ISBN:4321

삭제하였습니다.

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

4

도서 목록

도서 :2

ISBN:1234 이름:Java 가격:2000

ISBN:3421 이름:자료구조 가격:2000

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

5

ISBN 목록

도서 :2

1234

3421

1:추가 2:삭제 3:검색 4:도서 목록 5:ISBN 목록 0:종료

0

종료합니다...

 



출처: http://ehclub.co.kr/3083 [언제나 휴일]

 

Posted by 농부지기
,