java HashMap과 HashTable의 차이점 상세 정보
(1) 계승된 역사가 다르다
public class Hashtable extends Dictionary implements Map
public class HashMap extends AbstractMap implements Map
Hashtable은 Dictionary 클래스를 계승한 것이고 HashMap은 자바 1.2가 도입한 맵 인터페이스의 실현이다.(2) 보안이 다릅니다.
HashMap은 비synchronized이고 HashTable은 기본적으로 synchronized입니다. 이것은 HashTable이 안전하고 여러 개의 스레드가 하나의 HashTable을 공유할 수 있다는 것을 의미합니다.정확한 동기화가 없으면 여러 개의 스레드가 HashMap을 공유할 수 없습니다.Java 5 이후 ConcurrentHashMap을 제공했는데 이것은 HashTable의 대체로 HashTable보다 확장성이 좋다.물론 다음과 같은 방법으로 HashMap을 동기화할 수 있습니다.
Map m = Collections.synchronizeMap(hashMap);
(3) 빈 값의 공통점과 차이점 여부HashMap은 빈 값을 테이블 항목의 키나 값으로 사용할 수 있습니다.HashMap에는 빈 키만 기록될 수 있지만 임의의 항목은 빈 값일 수 있습니다.이것은 테이블에서 검색 키를 발견하지 못했거나 검색 키를 발견했지만 빈 값이면 get () 는null로 되돌아온다는 것이다.HashTable은 안 됩니다. 키와value는 null 값을 허용하지 않습니다.
(4) 양자의 역행 방식의 내부 실현상 다르다
Hashtable, HashMap은 모두 Iterator 교체기를 사용하고, HashMap의 교체기(Iterator)는fail-fast 교체기이며, HashTable의 enumerator 교체기는fail-fast가 아니다.Hashtable은 역사적인 이유로 Enumeration 방식을 사용했습니다.
(5) 해시 값의 사용이 다르다
HashTable은 대상의 HashCode를 직접 사용하고, HashMap은 Hash값을 다시 계산해야 합니다.
(6) 양자 내부 실현 방식의 수조의 초기 크기와 확장 방식이 다르다
HashTable에서hash수조의 기본 크기는 11이고 추가 방식은old*2+1입니다.HashMap에서 Hash수 그룹의 기본 크기는 16이고 반드시 2의 지수입니다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.