1.HashMap 與 HashTable的區別:
- HashMap和Hashtable的區別。
1:hashMap 是非線程安全的。效率高。
hashTable 是線程安全的。效率低。
HashMap是Hashtable的輕量級實現(非線程安全的實現),:
2:他們都完成了Map接口主要區別在於HashMap允許空(null)鍵值(key),由於非線程安全,效率上可能高於Hashtable。
HashMap允許將null作爲一個entry的key或者value,而Hashtable不允許。
3:HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey因爲contains方法容易讓人引起誤解。 Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。
最大的不同是,
Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己爲它的方法實現同步,而HashMap 就必須爲之提供外同步。
Hashtable和HashMap採用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。
- @author Administrator
public class HashTableDemo {
public static void main(String[] args) {
HashMap<String,String> hashMap = new HashMap<String,String>();
hashMap.put(null, null);
hashMap.containsKey("");
hashMap.containsValue("");
Hashtable<String,String> hashtable = new Hashtable<String,String>();
hashtable.put("a", "1");
hashtable.put(null, null);// 區別:會出現異常。
// hashtable.contains(value) 這個方法容易誤解。
}
}