Hasttable--與--HashMap的區別

Hashtable和HashMap的區別
1.Hashtable是Dictionary(抽象類,如下:)的子類,HashMap是Map接口的一個實現類;
2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情況下是非同步的。即是說,在多線程應用程序中,不用專門的操作就安全地可以使用Hashtable了;而對於HashMap,則需要額外的同步機制。但HashMap的同步問題可通過Collections的一個靜態方法得到解決:
Map Collections.synchronizedMap(Map m)
這個方法返回一個同步的Map,這個Map封裝了底層的HashMap的所有方法,使得底層的HashMap即使是在多線程的環境中也是安全的。同步是有代價的,而Hashtable的同步機制是無法在不需要的時候關閉掉的,因此編程中出於性能的考慮,我們都應該首選HashMap。
3.在HashMap中,null可以作爲鍵,這樣的鍵只有一個;可以有一個或多個鍵所對應的值爲null。當get()方法返回null值時,即可以表示HashMap中沒有該鍵,也可以表示該鍵所對應的值爲null。因此,在HashMap中不能由get()方法來判斷HashMap中是否存在某個鍵,而應該用containsKey()方法來判斷。


--------------------------------------- Dictionary類  --------------------------------------------------
     Dictionary類是一個抽象類,定義了一個映射鍵(keys)與值(values)的數據結構。該類可以通過特定的鍵來訪問數據。由於Dictionary類是抽象類,它僅僅提供了一個用於健與數據之間映射的數據結構框架,而不是一個特定的實體。
     通常,Dictionary被用來將一個對象和一個名字聯繫起來,並基於這個名字來檢索對象。在Dictionary中,名字對象被稱爲一個關鍵字,可爲任意類型的對象,和關鍵字相聯繫的對象稱爲值。一個關鍵字只能與一個值相對應,但是一個值可以有多個關鍵字。 
7.11.1 在Dictionay中存儲對象 
     在Dictionary中,pul方法使用特定的關鍵字來存儲對象:
     ·public abstrack Object put(Object key,Object value) throws NullPointarException
     用put方法返回的對象是從前與該關鍵字相聯繫的對象,如果沒有以前的聯繫,則返回null。不能將key或value設置爲null值,如果將null傳遞給這兩個參數中的任意一個,將產生一個NullPointerException異常。 
7.11.2 從Dictionary中檢索對象 
     get方法查找Dictionary和一個特定的關鍵字相聯繫的對象:
     ·public abstract Object get(Object key) 如果沒有和這個關鍵字相對應的值則返回null 
7.11.3 從Dictionary中移走對象 
     ·public abstrac Object remove(Object key) 爲了從Dictionary中移走一個“關鍵字-值”對。返回值是與關鍵字相聯繫的對象,如果沒有和這個關鍵字相聯繫的對象,返回null。
     ·public abstract boolean isEmpty() 如果Dictionary中沒有對象,isEmpty方法返回true:
     ·public abstract int size() 返回Dictionary中含有多少個“關鍵字-值”對。
     ·public abstract Enumeration keys() 返回一個枚舉對象,該對象允許檢查Dictionary中所有的關鍵字。
     ·public abstract Enumeration elements() 對於Dictionary中的所有值,elements方法返回一個枚舉對象。

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