哈希表是一種重要的存儲方式,也是一種常見的檢索方法。其基本思想是將關係碼的值做爲自變量,經過必定的函數關係計算出對應的函數值,把這個數值解釋爲結點的存儲地址,將結點存入計算獲得存儲地址所對應的存儲單元。檢索時採用檢索關鍵碼的方法。如今哈希表有一套完整的算法來進行插入、刪除和解決衝突。在Java中哈希表用於存儲對象,實現快速檢索。 Java.util.Hashtable提供了種方法讓用戶使用哈希表,而不須要考慮其哈希表真正如何工做。 哈希表類中提供了三種構造方法,分別是: public Hashtable() public Hashtable(int initialcapacity) public Hashtable(int initialCapacity,float loadFactor) 參數initialCapacity是Hashtable的初始容量,它的值應大於0。loadFactor又稱裝載因子,是一個0.0到0.1之間的float型的浮點數。它是一個百分比,代表了哈希表什麼時候須要擴充,例如,有一哈希表,容量爲100,而裝載因子爲0.9,那麼當哈希表90%的容量已被使用時,此哈希表會自動擴充成一個更大的哈希表。若是用戶不賦這些參數,系統會自動進行處理,而不須要用戶操心。 Hashtable提供了基本的插入、檢索等方法。 ■插入 public synchronized void put(Object key,Object value) 給對象value設定一關鍵字key,並將其加到Hashtable中。若此關鍵字已經存在,則將此關鍵字對應的舊對象更新爲新的對象Value。這代表在哈希表中相同的關鍵字不可能對應不一樣的對象(從哈希表的基本思想來看,這也是顯而易見的)。 ■檢索 public synchronized Object get(Object key) 根據給定關鍵字key獲取相對應的對象。 public synchronized boolean containsKey(Object key) 判斷哈希表中是否包含關鍵字key。 public synchronized boolean contains(Object value) 判斷value是不是哈希表中的一個元素。 ■刪除 public synchronized object remove(object key) 從哈希表中刪除關鍵字key所對應的對象。 public synchronized void clear() 清除哈希表 另外,Hashtalbe還提供方法獲取相對應的枚舉集合: public synchronized Enumeration keys() 返回關鍵字對應的枚舉對象。 public synchronized Enumeration elements() 返回元素對應的枚舉對象。 例8.5 Hashtable.java給出了使用Hashtable的例子。 例8.5 Hashtalbe.java。 //import java.lang.*; import java.util.Hashtable; import java.util.Enumeration; public class HashApp{ public static void main(String args[]){ Hashtable hash=new Hashtable(2,(float)0.8); //建立了一個哈希表的對象hash,初始容量爲2,裝載因子爲0.8 hash.put("Jiangsu","Nanjing"); //將字符串對象「Jiangsu」給定一關鍵字「Nanjing」,並將它加入hash hash.put("Beijing","Beijing"); hash.put("Zhejiang","Hangzhou"); System.out.println("The hashtable hash1 is: "+hash); System.out.println("The size of this hash table is "+hash.size()); //打印hash的內容和大小 Enumeration enum1=hash.elements(); System.out.print("The element of hash is: "); while(enum1.hasMoreElements()) System.out.print(enum1.nextElement()+" "); System.out.println(); //依次打印hash中的內容 if(hash.containsKey("Jiangsu")) System.out.println("The capatial of Jiangsu is "+hash.get("Jiangsu")); hash.remove("Beijing"); //刪除關鍵字Beijing對應對象 System.out.println("The hashtable hash2 is: "+hash); System.out.println("The size of this hash table is "+hash.size()); } } 運行結果: The hashtable hash1 is: {Beijing=Beijing, Zhejiang=Hangzhou, Jiangsu=Nanjing} The size of this hash table is 3 The element of hash is: Beijing Hangzhou Nanjing The capatial of Jiangsu is Nanjing The hashtable hash2 is: {Zhejiang=Hangzhou, Jiangsu=Nanjing} The size of this hash table is 2 Hashtable是Dictionary(字典)類的子類。在字典類中就把關鍵字對應到數據值。字典類是一個抽象類。在java.util中還有一個類Properties,它是Hashtable的子類。用它能夠進行與對象屬性相關的操做。