當前位置:成語大全網 - 書法字典 - Map、Dictionary、Hash表的異同?

Map、Dictionary、Hash表的異同?

第壹個區別是談繼承。

妳看看百度,會發現網上壹般的說法都和“由於Java發展的歷史原因”有關。Hashtable基於過時的Dictionary類,HashMap是Java 1.2引入的Map接口的實現。“壹樣。

這種說法沒有錯,但是不夠準確,尤其是對於我們這種大眾菜鳥。如果不深究,可能會造成壹些認識上的差異。簡單的認為Hashtable沒有繼承Map接口。

我們可以參考JDK1.6的最新源代碼來看看這兩個類的定義:

公共類哈希表& ltk,V & gt擴展字典& ltk,V & gt實現映射& ltk,V & gt,Cloneable,java.io.Serializable {…}

公共類HashMap & ltk,V & gt擴展AbstractMap & ltk,V & gt實現映射& ltk,V & gt,可克隆,可序列化{…}

可以看到hashtable也繼承了Map接口。

它們的區別在於Hashtable(從JDK1.0開始)繼承了抽象類字典。

HashMap(從JDK1.2開始)繼承了AbstractMap類。

第二個區別我們來說說他們在同步和並發方面的區別。

可以通過這兩個類的源代碼來分析。Hashtable中的主要方法是同步的,但是HashMap不是。

可以說Hashtable默認支持同步,HashMap默認不支持。

我們可以在多線程並發環境下直接使用Hashtable,但是如果要使用HashMap,就要自己添加同步。

HashMap的同步處理可以使用Collections類提供的synchronizedMap靜態方法;

或者直接使用JDK5.0之後提供的java.util.concurrent包中的ConcurrentHashMap類。