1. HashMap은 key와 value에 null을 허용 / Hashtable 은 null 을 허용하지 않음.

2. HashMap은 thread-safe 하지 않고 (not synchronized) Hashtable은 그렇다 (synchronized). 

HashMap 자체는 not synchronized하기 때문에 다음과 같이 Collection.synchronizedMap을 이용해서 synchronized하게 만들 수 있다.

Map m = Collections.synchronizedMap(new HashMap(...));

3. HashMap은 bucket에 element들을 흩어뿌리기 때문에 get/put과 같은 기본 동작들이 동일한 시간 (constant-time performance) 에 수행된다.

출처 : [Java] HashMap을 쓸 것인가 Hashtable을 쓸 것인가?? 

Vector 와 ArrayList 의 차이도 synchronized 인데, HashMap 과 HashTable 도 그렇다.

다만 Collection.synchronizedArray 나 synchronizedMap 해서 얻어진 객체가 Vector 나 HashTable 보다 빠른지 느린지를 모르겠다.

이건 시간이 정말 많이 날 때 찾아보거나 실험해볼 필요가 있을 듯 하다. 새로운 방법이 더 빠르다면 Vector 나 HashTable 은 아예 쓸 일이 없을테니...

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Heart