[ 1. Java HashMap 개념 및 사용방법 ]
1. 정의
- HashMap 클래스는 Map 인터페이스 기반의 구현 클래스 이다.
- 그리고 해쉬 테이블 자료 구조를 표현한 클래스 이다.
- key와 value를 쌍으로 보관하는 클래스 이다.
- 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 [언제나 휴일]