HashTable:
- 모든 함수마다 Synchronized 가 걸려있다.
- 동기화 되어 있어서 멀티스레드 환경에서도 안전하게 사용할 수 있다.
- 멀티스레드 환경이 아니라면 HashTable은 HashMap 보다 선응이 떨어진다.
- null 키와 null 값을 허용한다.
- Hashtable 은 JDK 1.0 부터 있었던 Lagacy 자료형이다. 그 이후로 변화가 거의 없다시피하다.
- 동기화를 원한다면 차라리 ConcurrentHashMap 을 사용하는것이 낫다.
HashMap:
- 동기화 되어있지 않아서 멀티스레드에 안전하지 않다.
- null 키와 null 값을 허용하지 않는다.
- Hash 함수를 이용해 key 를 해싱하므로 키와 값에 대한 순서를 보장하지 않는다.
- 빠른 접근속도를 보장한다.
- 해시 충돌이 없다고 가정한다면 접근, 추가, 삭제, 검색 모두 O(1) 이다.
LinkedHashMap:
- HashMap 과 동일하지만, 차이점은 데이터를 추가한 순서대로 순서를 보장한다.