2010-05-03 57 views

回答

4

查看Hashtable實現的source,看起來它已經使用單獨的鏈接。如果您看到從901行開始的Entry<K,V>類,您會看到它有一個對名爲next的另一個Entry的引用。然後,如果您查看put()方法,則在第420行,next引用通過構造函數填充爲以前存儲在該存儲桶中的任何元素。

請注意,您通常不應該擔心諸如這些的實現細節。 Java集合框架可能是Java中使用最廣泛的框架之一,因此您應該假定作者已經將性能調整到了最佳狀態。

我想指出的另外一件事是,Hashtable類已經被HashMap類(它也使用單獨的鏈接,請參閱here)大部分替代。兩者的主要區別在於Hashtable中的所有方法都是同步的,而在HashMap中則不是。在單線程環境下運行的情況下(這可能是此問題的原因),這會帶來更好的性能。

如果需要一個線程安全的Map實現,那麼你應該考慮要麼包裹在通話正常HashMapCollections.synchronizedMap(),或使用ConcurrentHashMap