當前位置:成語大全網 - 書法字典 - 哈希表和哈希表的區別

哈希表和哈希表的區別

HashMap和Hashtable都實現了Map接口,但是在決定使用哪壹個之前,我們應該弄清楚它們之間的區別。主要區別是線程安全、同步和速度。

HashMap幾乎等同於Hashtable,只是HashMap是同步的,並且可以接受null(HashMap可以接受null鍵和值,但Hashtable不能)。

HashMap是不同步的,而Hashtable是同步的,這意味著Hashtable是線程安全的,多個線程可以* * *共享壹個Hashtable;而如果沒有正確的同步,多線程就無法* * *享受HashMap。Java 5提供了ConcurrentHashMap,它是HashTable的替代品,比HashTable更具可擴展性。

另壹個區別是HashMap的叠代器是快速失效叠代器,而Hashtable的枚舉器不是快速失效叠代器。因此,當另壹個線程更改HashMap的結構(添加或刪除元素)時,它將引發並發表征異常,但叠代器本身的remove()方法不會引發並發表征異常。但這不是壹個確定的行為,它取決於JVM。本文也是枚舉和叠代器的區別。

Hashtable是線程安全和同步的,因此在單線程環境中比HashMap慢。如果不需要同步,只需要單線程,那麽使用HashMap比Hashtable更好。

HashMap不能保證地圖中元素的順序不會隨著時間的推移而改變。