HashTable 與 HashMap 異同
1)HashMap 不是線程安全的 ,是一個接口,是 map 接口的子接口,是將鍵映射到值的對象,其中鍵和值都是對
象,並且不能包含重複鍵,但可以包含重複值。HashMap允許 nullkey 和 nullvalue,而Hashtable 不允許。
2) HashTable是線程安全的一個Collection。HashMap是Hashtable 的輕量級實現(非線程安全的實現),都完成了
Map 接口,主要區別在於HashMap 允許空(null)鍵值(key),由於非線程安全,效率上可能高於
Hashtable。
3)HashMap 允許將 null作爲一個entry 的 key 或者value,而Hashtable 不允許。
4)HashMap 把 Hashtable 的contains 方法去掉了,改成containsvalue 和containsKey。因爲contains 方法容易讓人
引起誤解。
5)Hashtable 繼承自 Dictionary 類,而 HashMap 是 Java1.2 引進的 Map interface的一個實現。
6)Hashtable 的方法是 Synchronize 的,而HashMap 不是,在多個線程訪問Hashtable時,不需要自己爲它的方法實
現同步,而HashMap 就必須爲之提供外同步。
7)Hashtable和HashMap 採用的hash/rehash 算法都大概一樣,所以性能不會有很大的差異
重要的區別在於1)、2)、3)、5)
HashMap HashTable
線程不安全,是Map的子接口 線程安全的,繼承於Dictionary類
多線程不同步 多線程自動同步
允許將null 作爲一個entry的key或者value