판봉 개발 일기

Hashtable에 대하여 본문

자바 복습

Hashtable에 대하여

판봉 2021. 7. 14. 12:16
728x90

Hastable은 HashMap과 동일한 내부 구조를 가지고 있다.

그래서 키로 사용할 객체는 hashCode()와 equals() 메소드를 재정의해서 동등 객체가 될 조건을 정해야 한다.

 

한가지 차이점이 있다면

Hashtable은 동기화된 메소드로 구성되어 있기때문에 스레드에 안전하다.

 

Hashtable의 생성 방법은 다음과 같다.

Map<K, V> map = new Hashtable<K, V>();

다음 코드는 Hashtable은 활용한 예제이다.

import java.util.*;

public class HashTableExample {
	public static void main(String[] args) {
    	Map<String, String> map = new Hashtable<String, String>(); // Hashtable 생성
        
        map.put("spring", "13");
        map.put("summer", "123");
        map.put("fall", "1234");
        map.put("winter", "12345"); //아이디와 비밀번호 저장
        
        Scanner scanner = new Scanner(System.in); // Scanner 생성
        
        while(true) {
        	System.out.println("아이디와 비번을 입력하시오");
            System.out.print("아이디 : ");
            String id = scanner.nextLine(); // 키보드로 입력한 값을 id로 받음
            
            System.out.print("비밀번호: ");
            String password = scanner.nextLine();
            System.out.println();
            
            if(map.containsKey(id)) { // 값의 존재여부를 확인
            	if(map.get(id).equals(password)) {
                System.out.println("로그인 됨");
                break;
                } else {
                System.out.println("비밀번호가 틀렸습니다.");
                }
            }else {
            System.out.println("입력한 아이디가 존재하지 않습니다.");
            }
        }
    }
}

※실무에서 Scanner는 거의 쓰지 않는다고 한다.