HashMap與HashTable的區別

同步與線程安全

HashMap是不同步,是非線程安全的;而HashTable是同步,是線程安全的。該區別決定了他們的使用場景。HashMap適合在單線程模式下使用,而HashTable適合在多線程模式下使用。爲了解決HashMap的非線程安全問題,可以選擇使用ConcurrentHashMap。該區別也決定了兩者的效率:在單線程模式下,HashMap在時間和空間上都優於HashTable。

Null主鍵和Null值

HashMap允許有一個Null主鍵,和數量不等的Null值,而HashTable不允許有Null主鍵和Null值

遍歷值的方式

HashMap通過Iterator遍歷,而HashTable通過Enumerator遍歷值(類似的還有vector)。HashMap的iterate是fail-fast,有可能會拋出ConcurrentModification異常;而HashTable的enumerate不是fail-fast。Iterator 與 Enumerator的區別

共同點

HashMap和HashTable都不保證元素順序與其插入順序一致。LinkedHashMap可以保證插入順序的一致性。兩者都實現了Map接口。兩者的實現原理都是基於Hash思想。HashMap的實現原理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章