HashMap和Hashtable的區別

 

HashMap和Hashtable的區別

 7337人閱讀 評論(9) 收藏 舉報
轉載:http://blog.csdn.net/ago52030/article/details/2287041
導讀: 

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中的集合,這裏主要從其元素是否有序,是否可重複來進行區別記憶,以便恰當地使用,當然還存在同步方面的差異,見上一篇相關文章。


 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章