2010-05-03 4 views

답변

4

Hashtable 구현의 source에서 보면 이미 별도의 연결을 사용하고있는 것처럼 보입니다. Entry<K,V> 클래스를 901 행에서 보면, next이라는 다른 항목에 대한 참조가 있음을 알 수 있습니다. 그런 다음 put() 메소드를 보면 420 행에 이전에 해당 버킷에 저장된 요소가되도록 next 참조가 생성자를 통해 채워집니다.

일반적으로 이와 같은 구현 세부 사항에 대해서는 염려하지 않아야합니다. Java Collections Framework은 아마도 Java에서 가장 널리 사용되는 프레임 워크 중 하나 일 수 있습니다. 따라서 제작자가 성능을 원하는만큼 좋게 조정했다고 가정해야합니다.

내가 지적하고자하는 한 가지 다른 점은 Hashtable 클래스가 대부분 HashMap 클래스로 대체되었다는 점입니다.이 클래스도 별도의 연결을 사용합니다 (here 참조). 두 가지 주요 차이점은 Hashtable에있는 모든 메서드가 동기화되는 반면 HashMap에는 그렇지 않다는 것입니다. 단일 스레드 환경에서 실행되는 상황에서 성능이 향상됩니다 (이 질문의 원인 일 수 있음).

당신이이 스레드 안전지도의 구현을 필요로 할 경우에, 당신은 고려해야 중 Collections.synchronizedMap()에 대한 호출에서 정상 HashMap 포장, 또는 ConcurrentHashMap를 사용하여.