해시 맵과 해시 가능의 차이는 종종 다른 사람들이 요청합니다. 오늘 여기에 요약하겠습니다.
(i) 상속의 역사는 다릅니다
공개 클래스 해시 가능 확장 사전 구현 Mappublic Class Hashmap 확장 AbstractMap 구현지도
Hashtable은 사전 클래스에서 상속되며 Hashmap은 Java 1.2에서 도입 한 MAP 인터페이스의 구현입니다.
(ii) 다른 보안
해시 맵은 동기화되지 않으며 해시 가능은 기본적으로 동기화됩니다. 이는 해시 테이블이 스레드-안전하고 여러 스레드가 해시 가능을 공유 할 수 있음을 의미합니다. 올바른 동기화가 없으면 여러 스레드가 해시 맵을 공유 할 수 없습니다. Java 5는 나중에 hashtable을 대체하고 해시 가능보다 확장 성이 우수한 ConshErthashMap을 제공합니다. 물론, 우리는 다음과 같이 해시 맵을 동기화 할 수 있습니다.
MAP M = Collections.Synchronizemap (Hashmap);
(iii) 가능한 널 값에서 동일하거나 유사합니다.
Hashmap을 사용하면 NULL 값을 테이블 항목의 키 또는 값으로 사용할 수 있습니다. 해시 맵에는 빈 키가 될 수있는 레코드가 하나만 있지만, 모든 항목은 빈 값이 될 수 있습니다. 즉, 테이블에 검색 키가 없거나 검색 키가 발견되지 않으면 빈 값이면 get ()가 NULL을 반환합니다. Hashtable은 작동하지 않지만 키나 값은 널 값을 허용하지 않습니다.
(iv) 두 트래버스 방법의 내부 구현은 다릅니다.
Hashtable 및 Hashmap은 모두 반복자 반복기를 사용합니다. 해시 맵의 반복자는 고속 반복자이며, 해시 가능의 열거 자 반복자는 고급스러운 것이 아닙니다. 역사적 이유로 인해 Hashtable은 열거 방법을 사용합니다.
(v) 해시 값의 다른 사용
Hashtable은 객체의 해시 코드를 직접 사용하는 반면 해시 맵은 해시 값을 다시 계산해야합니다.
(vi) 내부 구현 방법 배열의 초기 크기 및 확장 방법은 다릅니다.
해시 가능 해시 어레이의 기본 크기는 11이고, 증가하는 방법은 오래된*2+1입니다. 해시 맵에서 해시 어레이의 기본 크기는 16이므로 2의 지수 여야합니다.
읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!