JAVA/Java 기초

컬렉션프레임워크 - HashMap

H_eh 2022. 6. 4. 01:20

 

  • Map 인터페이스를 구현한 클래스 중 가장 많이 사용
  • 새로운 key-value 자료가 입력되거나, key를 알고 있는 상태에서 value 를 검색
  • 자료 추가 속도, 검색속도가 빠르다

 

  • put(), get()
public class CollEx20hashMap {
	public static void main(String[] args) {

		HashMap<String, String> h =
				new HashMap<String, String>();
		
		h.put("물", "water");
		h.put("커피", "coffee");
		h.put("티", "tea");
		
		System.out.println( h.get("커피") ); //키를 기준으로 값을 뽑아냄
		
		Set<String> keys = h.keySet();	//물, 커피, 티
		
		Iterator<String> it = keys.iterator();
		while(it.hasNext()) {
			String a = it.next();	//키
			String b = h.get(a);	//a로부터 value 가져오기
			
			System.out.println(a+" "+b);
		}
	}
}

 

 

  • containsKey() : HashMap에 매개변수로 받은 키 값이 있으면.
  • 간단한 login 기능 구현
public class CollEx21hashMapLogin {
	public static void main(String[] args) {

		HashMap h = new HashMap();
		h.put("suin", "123");
		h.put("chongA", "234");
		h.put("seoyoung", "345");
		
		Scanner sc = new Scanner(System.in);
		//id, pw 검색

		while(true) {
			System.out.println("id, pw 입력:");
			String id = sc.next(); 
			String pw = sc.next();

			/*
			 * 1. 둘다 맞을 경우
			 * 2. id가 해시맵에 없을 경우
			 * 3. id는 있는데 비번이 틀릴 경우
			 */
			if( !h.containsKey(id)) {	//id가 해시맵에 없을 경우
				System.out.println("없는 ID 입니다.");
				continue;	// id 다시 입력하게.
			}
			else {
				if( !h.get(id).equals(pw) ) {	//id의 pw과 입력한 pw가 같으면	
					System.out.println("비밀번호가 틀렸습니다.");
				}
				else {
					System.out.println("로그인 되었습니다.");
					break;
				}
			}
		}
	}
}

 

  • HashMap 을 이용하여 단어 검색 구현하기
    • HashMap 을 만든다.
      • HashMap 에 데이터를 추가한다.
    • 모든 키 값들을 (집합형태로) 받아온다
      • 키를 기준으로 순회하며 목록을 출력한다
    • 반복문을 이용해서 검색기능을 구현한다
      • 검색어 입력받기
      • 검색어(키)에 해당하는 값을 받아와 저장한다
    • 값이 없으면 "없는 단어"를 출력하고, 있으면 값을 출력한다.
    • '종료'를 입력하면 프로그램이 종료된다.
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;

public class EtcHashMapSearch {
	public static void main(String[] args) {

		HashMap<String, String> h =
				new HashMap<String, String>();
		h.put("커피", "coffee");
		h.put("홍차", "(black)tea");
		h.put("맥주", "beer");
		
		//목록 출력
		System.out.println("검색가능한 단어 목록:");
		Set<String> keys = h.keySet();
		Iterator<String> it = keys.iterator();
		while(it.hasNext()) {
			String k = it.next();
			System.out.print(k+" ");
		}
		System.out.println();
		
		//단어검색
		Scanner sc = new Scanner(System.in);
		while(true) {
			System.out.println("'종료'를 입력하면 멈춥니다.");
			System.out.println("찾을 단어 입력:");
			String sch = sc.next();
			String result = h.get(sch);
			
			if(result == null) {
				if(sch.equals("종료")) {
					break;
				}
				System.out.println("없는 단어 입니다.");
			}
			else {
				System.out.println(sch+" = "+result);
			}
		}
	}
}
728x90
728x90