java HashMap과 HashTable의 차이점 상세 정보

1390 단어 javaHashMapHashTable
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의 지수입니다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기