HashMap VS HashTable
둘의 차이점을 최대한 요약해서 정리해보자면
1. HashMap은 단일 스레드 적합하며 null을 허용하지만 동기화가 안된다.
2. HashTable은 멀티 스레드에 적합하고 동기화되지만 null을 입력할 수 없고 동기화에 따른 성능의 저하가 발생한다.
아래는 상세한 차이점.
HashMap vs Hashtable
HashMap
1) 비동기식이다. 멀티 스레드에는 적합하지 않다.
2) key, value에서 하나의 null key와 다수의 널 value를 허용한다.
3) HashMap is a new class introduced in JDK 1.2.
4) 속도가 비교적 빠르다.
5) 아래 코드를 사용하면 동기화가 가능하다.
Map m = Collections.synchronizedMap(HashMap);
6) HashMap is traversed by Iterator.
7) Iterator in HashMap is fail-fast.
8) HashMap inherits AbstractMap class.
Hashtable
1) 동기식이다. 멀티 스레드 환경에 적합하다.
2) null key or value 불가능.
3) Hashtable is a legacy class.
4) 속도가 비교적 느리다.
5) 비동기화로 사용될 수 없다.
6) Hashtable is traversed by Enumerator and Iterator.
7) Enumerator in Hashtable is not fail-fast.
8) Hashtable inherits Dictionary class.
예제
HashMap
import java.util.HashMap;
import java.util.Map;
public class TestClass {
public static void main(String args[ ]) {
Map<Integer,String> states = new HashMap<Integer,String>();
states.put(1, "KOREA");
states.put(2, "USA");
states.put(3, null); // 문제 없음
states.put(null,"UK"); // 문제 없음
System.out.println(states.get(1));
System.out.println(states.get(2));
System.out.println(states.get(3));
}
}
Hashtable
import java.util.Map;
import java.util.Hashtable;
public class TestClass {
public static void main(String args[ ]) {
Map<Integer,String> states= new Hashtable<Integer,String>();
states.put(1, "KOREA");
states.put(2, "USA");
states.put(3, null); // runtime에 NullPointerEcxeption 발생
states.put(null, "THAI"); // runtime에 NullPointerEcxeption 발생
System.out.println(states.get(1));
System.out.println(states.get(2));
System.out.println(states.get(3));
}
}
'[개발] Programming > Java' 카테고리의 다른 글
자바 Exception:Broken pipe 오류 해결 방법 (0) | 2018.11.09 |
---|---|
자바 쿠키 다루기 (쿠기 생성, 조회, 삭제) (0) | 2018.11.08 |
자바, 몇몇 특수문자로 split이 안될 때 해결 방법 (2) | 2018.11.08 |
LOB의 종류와 CLOB을 자바 스트링으로 변환시키는 방법 (0) | 2018.11.07 |
자바 SimpleDateFormat으로 Date 타입 String 타입으로 변환 (0) | 2018.11.07 |
댓글