Hashmap과 Hashtable의 비교는 Java 인터뷰에서 일반적인 질문으로, 프로그래머가 컬렉션 클래스를 올바르게 사용할 수 있는지 여부와 다양한 아이디어에 적응할 수 있는지 문제를 해결할 수 있는지 테스트하는 데 사용됩니다. Hashmap의 작동 방식, Arraylist와 Vector 비교 및이 질문은 Java Collection Frameworks에 대한 가장 전형적인 질문입니다. Hashtable은 오랫동안 Java API에 존재했던 구식 컬렉션 클래스입니다. Java 4에 다시 작성되어 MAP 인터페이스를 구현 했으므로 이후 Java Collection Framework의 일부가되었습니다. Hashtable과 Hashmap은 Java 인터뷰에서 물어볼 수있는 매우 쉽고 컬렉션 프레임 워크 인터뷰에서 테스트 할 가장 일반적인 질문이되었으므로 Java 인터뷰에 참여하기 전에이 질문을 준비하는 것을 잊지 마십시오.
이 기사에서는 Hashmap과 Hashtable의 차이뿐만 아니라 그들 사이의 유사성도 볼 것입니다.
해시 맵과 해시 가능의 차이
Hashmap과 Hashtable은 모두 맵 인터페이스를 구현하지만 어떤 사용을 사용할 것인지 결정하기 전에 먼저 그들 사이의 차이점을 알아 내야합니다. 주요 차이점은 스레드 안전, 동기화 및 속도입니다.
주목할 몇 가지 중요한 용어 :
1) Sychronized는 한 번만 한 번에 해시 가능을 변경할 수 있음을 의미합니다. 즉, 모든 스레드는 먼저 해시 테이블을 업데이트하려면 동기화 잠금을 얻어야합니다. 다른 스레드는 동기화 잠금을 얻고 해시 테이블을 다시 업데이트하기 전에 동기화 잠금이 해제 될 때까지 기다려야합니다.
2) 실패-안전 및 반복자 반복자가 관련되어 있습니다. 컬렉션 객체가 반복자 또는 Listiterator를 생성 한 다음 다른 스레드가 컬렉션 객체를 "구조적으로"변경하려고 시도하면 동시 모성 외과 예외가 발생됩니다. 그러나 다른 스레드는 컬렉션을 "구조적으로"변경하지 않기 때문에 set () 메소드를 통해 수집 객체를 변경할 수 있습니다. 그러나 구조가 변경되고 set () 메소드가 호출되면 불법 행위 예외 예외가 발생합니다.
3) 구조적 변화는 맵의 구조에 영향을 미치는 요소를 삭제하거나 삽입하는 것을 나타냅니다.
해시 맵 동기화를 만들 수 있습니까?
해시 맵은 다음 과정을 통해 동기화 할 수 있습니다.
MAP M = Collections.Synchronizemap (Hashmap);
결론적으로
해시 테이블과 해시 맵에는 스레드 안전과 속도 사이에 몇 가지 주요 차이점이 있습니다. 완전한 스레드 안전이 필요한 경우에만 해시 테이블을 사용하고 Java 5 이상을 사용하는 경우 ConsurenTashMap을 사용하십시오.
원본 링크 : Javarevisited Translation : importnew.com -Tang Xiaojuan 번역 링크 : http://www.importnew.com/7010.html