HashTable 與 HashMap 異同


HashTable 與 HashMap 異同


1)HashMap 不是線程安全的 ,是一個接口,是 map 接口的子接口,是將鍵映射到值的對象,其中鍵和值都是對

,並且不能包含重複鍵,但可以包含重複值。HashMap允許 nullkey 和 nullvalue,而Hashtable 不允許。


2) HashTable是線程安全的一個Collection。HashMap是Hashtable 的輕量級實現(非線程安全的實現),都完成了

 Map 接口,主要區別在於HashMap 允許空(null)鍵值(key),由於非線程安全,效率上可能高於

 Hashtable。


3)HashMap 允許將 null作爲一個entry 的 key 或者value,而Hashtable 不允許。

 

4)HashMap 把 Hashtable 的contains 方法去掉了,改成containsvalue 和containsKey。因爲contains 方法容易讓人

引起誤解。

 

5Hashtable 繼承自 Dictionary 類,而 HashMap Java1.2 引進的 Map interface的一個實現。

 

6)Hashtable 的方法是 Synchronize 的,而HashMap 不是,在多個線程訪問Hashtable時,不需要自己爲它的方法實

現同步,而HashMap  就必須爲之提供外同步。

 

7)Hashtable和HashMap 採用的hash/rehash 算法都大概一樣,所以性能不會有很大的差異

 

 

重要的區別在於1)、2)、3)、5)


HashMap        HashTable

線程不安全,是Map的子接口            線程安全的,繼承於Dictionary類

多線程不同步                                     多線程自動同步

允許將null 作爲一個entry的key或者value


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