1 HashMap不是線程安全的
hastmap是一個接口 是map接口的子接口,是將鍵映射到值的對象,其中鍵和值都是對象,並且不能包含重複鍵,但可以包含重複值。HashMap允許null key和null value,而hashtable不允許。
2 HashTable是線程安全的一個Collection。
HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在於HashMap允許空(null)鍵值(key),由於非線程安全,效率上可能高於Hashtable。
HashMap允許將null作爲一個entry的key或者value,而Hashtable不允許。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因爲contains方法容易讓人引起誤解。
Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己爲它的方法實現同步,而HashMap 就必須爲之提供外同步。
Hashtable和HashMap採用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。
public static void main(String args[])
{
HashTable h=new HashTable();
h.put("用戶1",new Integer(90));
h.put("用戶2",new Integer(50));
h.put("用戶3",new Integer(60));
h.put("用戶4",new Integer(70));
h.put("用戶5",new Integer(80));
Enumeration e=h.elements();
while(e.hasMoreElements()){
System.out.println(e.nextElement());
}
map 的方法:
clear()從 Map 中刪除所有映射
remove(Object key)從 Map 中刪除鍵和關聯的值
put(Object key, Object value)將指定值與指定鍵相關聯
get(Object key)返回與指定鍵關聯的值
containsKey(Object key)如果 Map 包含指定鍵的映射,則返回 true
containsValue(Object value)如果此 Map 將一個或多個鍵映射到指定值,則返回 true
isEmpty()如果 Map 不包含鍵-值映射,則返回 true size()返回 Map 中的鍵-值映射的數目
這些都代表了Java中的集合,這裏主要從其元素是否有序,是否可重複來進行區別記憶,以便恰當地使用,當然還存在同步方面的差異,見上一篇相關文章。