HashMap與HashTable的區別(精簡版)
阿新 • • 發佈:2019-01-22
對於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的任何資料。