共同點(diǎn):
都是java 的集合類,都可以用來存放Java對(duì)象。
不同點(diǎn):
1、HashMap是非線程安全的。
HastMap是一個(gè)接口 是map接口的子接口,是將鍵映射到值的對(duì)象,其中鍵和值都是對(duì)象。HashMap允許null Key,null Value,而Hashtable是不允許的。
2、Hashtable是線程安全的一個(gè)Coillection。
具體來說:
A、HastMap 是Hashtable輕量級(jí)的應(yīng)用實(shí)現(xiàn)(非線程安全的應(yīng)用實(shí)現(xiàn))。他們都完成了Map接口,其區(qū)別在于Map允許null Key ,null Value ,由于非線程安全,因此運(yùn)行效率上會(huì)高于Hashtable。
B、Hashtable不允許允許將null作為一個(gè)entry的key或者value。 HashMap是把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因?yàn)閏ontains方法容易讓人引起誤解。
C、最大的不同:Hashtable的方法Synchronize 的,因此是線程安全的;HashMap的方法不是Synchronize的,因此是非線程安全的。
D、Hashtable和HashMap采用的hash/rehash算法大概一樣,所以性能不會(huì)有很大的差。
總結(jié):
| HashMap | 非線程安全 | 允許有null的鍵和值 | 效率高一點(diǎn) | 方法不是Synchronize的,要提供外同步 | 有containsvalue和containsKey方法 | HashMap 是Java1.2 引進(jìn)的Map interface 的一個(gè)實(shí)現(xiàn) | HashMap是Hashtable的輕量級(jí)實(shí)現(xiàn) |
| Hashtable | 線程安全 | 不允許有null的鍵和值 | 效率稍低 | 方法是是Synchronize的 | 有contains方法方法 | Hashtable 繼承于Dictionary 類 | Hashtable比HashMap要舊 |
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注