[Java] HashMap과 Hashtable 의 차이점

2011. 5. 3. 15:37개발언어/Java

*HashMap


-java.util.HashMap

HashMap 은 Map 인터페이스 계열의 대표적인 클래스이다. 키(Key)와 값(Value)으로 데이터를 관리하며 키를 이용하여 데이터를 추출할 수 있다.

 

HashMap에서 알아 두어야 하는 메서드는 데이터를 집어 넣을 때와 데이터를 추출할 때 사용하는 메서드이다.


먼저 다음과 같이 HashMap 객체를 생성한다.

 

-HashMap 객체 생성
Map<String, Integer> map = new HashMap<String,Integer>();

 

그리고 HashMap에 데이터를 추가하기 위해서는 put() 메서드에 키와 값을 매개변수로 넣어주면 된다.
첫 번째 매개변수가 키이며, 두 번째 매개변수가 값에 해당한다.

 

-HashMap 객체에 데이터 삽입
map.put("홍길동",new integer(1));

 

데이터 추출할 때에는 get() 메서드와 키를 이용해서 추출할 수 있다.

 

-키를 이용한 데이터 추출
System.out.println(map.get("홍길동"));

키를 이용해서 쉽게 검색하고자 한다면 HashMap을 이용하면 된다.

 

 

 

 

*Hashtable

 

일반적으로 동기화가 필요 없다면 HashMap을, 동기화 보장이 필요하다면 Hashtable을 사용하면된다.
HashMap과 Hashtable은 동기화를 보장하느냐 하지 않느냐는 측면 이외에는 차이가 거의 없다.
사용법도 똑같아, put() 메서드로 데이터를 삽입하고, get() 메서드로 추출하면된다.

Vector는 데이터(Data)에 해당하는 객체만을 이용했지만, Hashtable은 Map 인터페이스를 구현한 클래스이기 때문에 검색을 위한 키와 값을 함께 넣어주어야 한다.

 

-Hashtable의 특징

Hashtable에 데이터를 삽입할 때는 키(Key)와 값(value)을 함께 넣어 주어야 한다.

 

Hashtable의 사용 예

 

Hashtable h = new Hashtable(); //객체생성
h.put("name", new String("홍길동")); //데이터 삽입
String name = (String)h.get("Name"); //키를 이용한 데이터 추출(다운캐스팅 필요)

 

만약 Vector의 경우에 데이터를 찾고자 한다면 IndexOf()나 elementAt()으로 전체 데이터를 검색하면서 비교해야 한다.
하지만 Hashtable은 키만을 이용해서 간단하게 검색할 수 있다.