Java集合——HashMap與Hashtable的區別

共同點:

都是Java 的集合類,都可以用來存放Java對象。

不同點:

1、HashMap是非線程安全的。

       HastMap是一個接口 是map接口的子接口,是將鍵映射到值的對象,其中鍵和值都是對象。HashMap允許null Key,null Value,而Hashtable是不允許的。

2、Hashtable是線程安全的一個Coillection。

   

具體來說:

A、HastMap 是Hashtable輕量級的應用實現(非線程安全的應用實現)。他們都完成了Map接口,其區別在於Map允許null Key ,null Value ,由於非線程安全,因此運行效率上會高於Hashtable。

B、Hashtable不允許允許將null作爲一個entry的key或者value。 HashMap是把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因爲contains方法容易讓人引起誤解。

C、最大的不同Hashtable的方法Synchronize 的,因此是線程安全的HashMap的方法不是Synchronize的,因此是非線程安全的。

D、Hashtable和HashMap採用的hash/rehash算法大概一樣,所以性能不會有很大的差。


總結:

HashMap 非線程安全 允許有null的鍵和值 效率高一點 方法不是Synchronize的,
要提供外同步
有containsvalue和
containsKey方法
HashMap 是Java1.2 引進的
Map interface 的一個實現
HashMap是Hashtable
的輕量級實現
Hashtable 線程安全 不允許有null的鍵和值 效率稍低 方法是是Synchronize的 有contains方法方法 Hashtable 繼承於
Dictionary 類
Hashtable比HashMap要舊

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