1. 程式人生 > >HashMap與HashTable的區別(精簡版)

HashMap與HashTable的區別(精簡版)

對於HashMap與HashTable的區別這個老掉牙的問題,雖然平時我們在開始發都把集合用的很溜,但是要讓你講出來或者是說出它的內在原理,很多人一臉懵逼。接下來我就通過三個方面簡單概括這個問題:

背景:
Hashtable是基於陳舊的Dictionary類的,HashMap是Java 1.2引進的Map介面的一個實現

相同之處:
1.它們都是資料的集合,可以存放多個數據物件;
2.都是由key/value構成;
3.都是hash成員。

不同之處:
1.執行緒安全性:
hashmap:執行緒不安全;
hashtable:執行緒安全。

2.同步(synchronization):
hashmap:非同步。要想執行緒安全同步,
則需要:Map m = Collections.synchronizeMap(hashMap);
hashtable:同步。

3.速度
hashmap:由於是非同步可允許多執行緒訪問的,所以效率高;
hashtable:由於是同步的單執行緒資源訪問的模式,所以效率低。

4.結構:
hashmap:可以存放null的鍵值對,去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法;
hashtable:不能存入null的任何資料。