2013-03-31 2 views
2

다음과 같은 차이점이있는 해시 맵 및 해시 테이블의 내부 데이터 구조의 차이점은 무엇입니까?해시 테이블 및 해시맵

  1. 해시 맵은 하나의 null 키를 허용하고 해시 테이블은 none을 허용합니다.
  2. 해시 맵은 아직 해시 테이블을 읽지 않았지만 유지 관리 명령을 보장하지 않습니다.

나는 둘 다 근본적으로 내부적으로 '버킷'의 배열이라고 생각했습니다.

답변

2

그들은 둘 다 해시 값을 사용하여 요소를 식별하기 때문에. 따라서 그들은 주문을 보장 할 수 없습니다. 그리고 언급 한 차이점은 다른 추상 클래스를 확장했기 때문입니다. Dictionary는 키가 null이 아닌 값이어야하는 추상 맵 클래스입니다. JDK에서 더 많은 것을 찾을 수있는 이런 종류의 질문에 대해서는 단지 두 가지 두려움을주지 않아야합니다.

public class Hashtable<K,V> 
    extends Dictionary<K,V> 
    implements Map<K,V>, Cloneable, java.io.Serializable { 

public class HashMap<K,V> 
    extends AbstractMap<K,V> 
    implements Map<K,V>, Cloneable, Serializable 
0

예 내부적으로 모두 배열 버킷을 유지합니다. 내가 Hashtable 클래스의 메소드를 볼 수있는 것은 synchronized이고, HashMap 메소드는 그렇지 않습니다. 참조

0

당신은 고고학을 공부하지 않는 한 당신의 HashMap과 ConcurrentHashMap의 (스레드 안전)를 사용한다 들어

. 둘 중 하나에 특정한 메소드를 사용하지 않는 한 Map 인터페이스 인스턴스에 지정하십시오.

0

잘 HashTable 클래스가 동기화됩니다. 따라서 충돌 해결을 없애기 위해 체인 연결을 사용할 수 있습니다. 둘 다 어레이 버킷을 유지합니다.