본문 바로가기
Study Note/Java

JAVA_ 컬렉션 프레임워크 / HashMap과 Hashtable의 차이점

by 시뮝 2019. 9. 8.
728x90
스레드 동기화가 필요하지 않은 경우 일반적으로 HashMap이 HashTable보다 선호됩니다.
HashMap Hashtable
HashMap은 동기화가 안됩니다. Hashtable은 동기화가 됩니다.
HashMap은 스레드에 안전하지 못합니다. Hashtable은 스레드에 안전합니다.
HashMap은 적절한 동기화 코드가 없다면 많은 스레드간 공유가 불가능합니다. Hashtable은 많은 스레드에 공유 가능합니다.
HashMap은 하나의 null 키 값과 다수의 null 벨류 값을 가질 수 있습니다. Hashtable은 null 사용이 불가능합니다.
HashMap은 JDK 1.2에 추가된 클래스입니다. Hashtable은 오래된(래거시) 클래스입니다.
HashMap은 빠릅니다. Hashtable은 느립니다.

HashMap은 아래 코드로 동기화할 수 있습니다.

Map m = Collections.synchronizedMap(hashMap);

Hashtable은 내부적으로 동기화가 진행되며 동기화할 수 없습니다.

HashMap은 반복자 Iterator에 의해 순회됩니다. 해시 테이블은 열거 자와 반복자가 통과합니다.
HashMap의 반복자 Iterator 는 Iterator의 remove() 이외의 코드로 기존 Collection이 수정될 경우 예외가 발생합니다. Hashtable의 열거자 Enumerator 는 실패하지 않습니다.
HashMap은 AbstractMap 클래스를 상속합니다. Hashtable은 Dictionary 클래스를 상속합니다.

 

 

참고 사이트(EN) : https://www.javatpoint.com/difference-between-hashmap-and-hashtable

728x90

댓글