哈希表是壹種重要的存儲方法和常用的檢索方法。其基本思想是將關系代碼的值作為自變量,通過壹定的函數關系計算出相應的函數值,將該值解釋為節點的存儲地址,並將節點存儲在計算出的存儲地址對應的存儲單元中。搜索時采用搜索鍵碼的方法。現在哈希表有壹套完整的插入、刪除和解決沖突的算法。在Java中,哈希表用於存儲對象並實現快速檢索。
Java.util.Hashtable為用戶提供了壹種使用哈希表的方式,而無需考慮其哈希表的實際工作方式。
哈希表類中有三種構造方法,即:
公共哈希表()
公共哈希表(int initialcapacity)
公共哈希表(int initialCapacity,float loadFactor)
參數initialCapacity是Hashtable的初始容量,其值應大於0。LoadFactor也稱為加載因子,是壹個介於0.0和1之間的浮點數。它是壹個百分比,指示哈希表何時需要擴展。例如,如果有壹個容量為100且加載因子為0.9的哈希表,那麽當哈希表容量的90%已被使用時,該哈希表將自動擴展為更大的哈希表。如果用戶沒有分配這些參數,系統將自動處理它們,無需用戶擔心。
Hashtable提供了插入和檢索等基本方法。
■插入
公共同步void put(對象鍵,對象值)
為對象值設置壹個關鍵字,並將其添加到哈希表中。如果該關鍵字已經存在,則將對應於該關鍵字的舊對象更新為新對象值。這說明同壹個關鍵字不可能對應哈希表中的不同對象(從哈希表的基本思想也可以明顯看出這壹點)。
■檢索
公共同步對象get(對象鍵)
根據給定的關鍵字key獲取相應的對象。
公共同步布爾包含鍵(對象鍵)
確定哈希表是否包含關鍵字key。
公共同步布爾包含(對象值)
確定值是否是哈希表中的元素。
■刪除
公共同步對象刪除(對象鍵)
從哈希表中刪除與關鍵字對應的對象。
公共同步void清除()
清除哈希表
此外,Hashtalbe還提供了獲取相應枚舉集的方法:
公共同步枚舉密鑰()
返回與關鍵字對應的枚舉對象。
公共同步枚舉元素()
返回與元素對應的枚舉對象。
示例1.5 Hashtable.java給出了壹個使用散列表的示例。
示例1.5 Hashtalbe.java。
//導入Java . lang . *;
導入Java . util . hashtable;
導入Java . util . enumeration;
公共類HashApp{
公共靜態void main(String args【】){
哈希表hash=new哈希表(2,(float)0.8);
//創建哈希表的對象哈希,初始容量為2,加載因子為0.8。
hash.put(“江蘇”、“南京”);
//給字符串對象“江蘇”壹個關鍵字“南京”,並將其添加到哈希中。
hash.put(“北京”、“北京”);
hash.put(“浙江”、“杭州”);
System.out.println(“哈希表hash h6 5438+0為:“+hash“);
System.out.println(“此哈希表的大小為“+hash . size()“);
//打印哈希的內容和大小。
enumeration enum 1 = hash . elements();
system . out . print(“hash的元素是:“);
while(enum 1 . hasmorelements())
system . out . print(enum 1 . next element()+““);
system . out . println();
//依次打印hash中的內容。
if(hash . contains key(“江蘇“))
System.out.println(“江蘇的能力是“+hash.get(“江蘇“));
hash . remove(“Beijing“);
//刪除關鍵字Beijing對應的對象。
System.out.println(“哈希表hash2為:“+hash“);
System.out.println(“此哈希表的大小為“+hash . size()“);
}
}
運行結果:
哈希表hash1為:{北京=北京,浙江=杭州,江蘇=南京}
這個哈希表的大小是3
哈希的元素是:北京杭州南京
江蘇的省會是南京
哈希表hash2為:{浙江=杭州,江蘇=南京}
這個哈希表的大小是2
Hashtable是Dictionary類的子類。在dictionary類中,關鍵字被映射到數據值。字典類是壹個抽象類。java.util中還有壹個類Properties,它是Hashtable的子類。它可用於執行與對象屬性相關的操作。