Hashtable
Last updated
Last updated
참고 링크
Serializable : 원격으로 객체를 전송, 파일 I/O 가능
Cloneable : Object 클래스의 clone() 메서드가 제대로 수행될 수 있음을 지정, 복제가 가능한 객체
Map<E> : 맵의 기본 메소드 지정
key-value pair 를 저장하는 자료구조로, 해시 함수를 사용하여 데이터를 저장하는 방식이다.
Hashtable 는 HashMap 과 동작 방식이 거의 동일하다. 하지만 몇가지 차이점이 있는데, 그 차이는 다음과 같다.
메서드에서 동기화를 기본적으로 한다.
key-value 값으로 null 을 허용하지 않는다.
동기화를 기본적으로 한다는 부분은매우 큰 차이이다.
Vector 와 마찬가지로 메서드에 기본적으로 synchronized 가 걸려 있다.
체이닝을 위한 연결리스트와 리사이징 과정으로 인해 메모리 사용량이 상대적으로 많은 수 있다.
대량의 데이터가 해시 충돌로 인해 리스트가 길어지면 메모리와 성능에 영향을 끼질 수 있다.
HashMap 에도 동일한 단점이 적용된다.
Vector 와 마찬가지로 메서드에만 동기화가 걸려있기 때문에,
클래스 전체로 동기화를 걸어야 할 수 있다.
Hashtable 은 Java 1.0 에서 제공된 클래스로, 레거시 클래스이다.
Java 1.2 부터 동일한 역할을 하는 HashMap 클래스가 도입되었고, 더 나은 성능과 기능을 제공한다.
최선 : O(1)
해시 충돌이 없는 상태
최악 : O(n)
해시 충돌이 많거나, rehasing 이 일어나는 경우
최선 : O(1)
해시 충돌이 없는 상태
최악 : O(n)
해시 충돌이 많은 경우
최선 : O(1)
해시 충돌이 없는 상태
최악 : O(n)
해시 충돌이 많은 경우
최선 : O(1)
해시 충돌이 없는 상태
최악 : O(n)
해시 충돌이 많은 경우