古詩詞大全網 - 成語大全 - 哈希值是什麽?

哈希值是什麽?

哈希表類Hashtable

哈希表是壹種重要的存儲方式,也是壹種常見的檢索方法。其基本思想是將關系碼的值作為自變量,通過壹定的函數關系計算出對應的函數值,把這個數值解釋為結點的存儲地址,將結點存入計算得到存儲地址所對應的存儲單元。檢索時采用檢索關鍵碼的方法。現在哈希表有壹套完整的算法來進行插入、刪除和解決沖突。在Java中哈希表用於存儲對象,實現快速檢索。

Java.util.Hashtable提供了種方法讓用戶使用哈希表,而不需要考慮其哈希表真正如何工作。

哈希表類中提供了三種構造方法,分別是:

public Hashtable()

public Hashtable(int initialcapacity)

public Hashtable(int initialCapacity,float loadFactor)

參數initialCapacity是Hashtable的初始容量,它的值應大於0。loadFactor又稱裝載因子,是壹個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()

返回元素對應的枚舉對象。

例1.5 Hashtable.java給出了使用Hashtable的例子。

例1.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的子類。用它可以進行與對象屬性相關的操作。