java中哈希表及其運用詳解。本站提示廣大學習愛好者:(java中哈希表及其運用詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是java中哈希表及其運用詳解正文
哈希表也稱為散列表,是用來存儲群體對象的聚集類構造。
甚麼是哈希表
數組和向量都可以存儲對象,但對象的存儲地位是隨機的,也就是說對象自己與其存儲地位之間沒有必定的接洽。當要查找一個對象時,只能以某種次序(如次序查找或二分查找)與各個元素停止比擬,當數組或向量中的元素數目許多時,查找的效力會顯著的下降。
一種有用的存儲方法,是不與其他元素停止比擬,一次存取便能獲得所須要的記載。這就須要在對象的存儲地位和對象的症結屬性(設為 k)之間樹立一個特定的對應關系(設為 f),使每一個對象與一個獨一的存儲地位絕對應。在查找時,只需依據待核對象的症結屬性 k 盤算f(k)的值便可。假如此對象在聚集中,則一定在存儲地位 f(k)上,是以不須要與聚集中的其他元素停止比擬。稱這類對應關系 f 為哈希(hash)辦法,依照這類思惟樹立的表為哈希表。
Java 應用哈希表類(Hashtable)來完成哈希表,以下是與哈希表相干的一些概念:
•容量(Capacity):Hashtable 的容量不是固定的,隨對象的參加其容量也能夠主動增加。
•症結字(Key):每一個存儲的對象都須要有一個症結字,key 可所以對象自己,也能夠是對象的一部門(如某個屬性)。請求在一個 Hashtable 中的一切症結字都是獨一的。
•哈希碼(Hash Code):若要將對象存儲到 Hashtable 上,就須要將其症結字 key 映照到一個整型數據,成為 key 的哈希碼。
•項(Item):Hashtable 中的每項都有兩個域,分離是症結字域 key 和值域 value(存儲的對象)。Key 和 value 都可所以隨意率性的 Object 類型的對象,但不克不及為空。
•裝填因子(Load Factor):裝填因子表現為哈希表的裝滿水平,其值等於元素數比上哈希表的長度。
哈希表的應用
哈希表類重要有三種情勢的結構辦法:
Hashtable(); //默許結構函數,初始容量為 101,最年夜填充因子 0.75
Hashtable(int capacity);
Hashtable(int capacity,float loadFactor)
哈希表類的重要辦法如表 8-6 所示。
表 8-6 哈希表界說的罕見辦法
哈希表的創立也能夠經由過程 new 操作符完成。其語句為:
HashTable has=new HashTable();
例子:
【例 8-12】哈希表的遍歷。
//********** ep8_12.java ********** import java.util.*; class ep8_12{ public static void main(String args[]){ Hashtable has=new Hashtable(); has.put("one",new Integer(1)); has.put("two",new Integer(2)); has.put("three",new Integer(3)); has.put("four",new Double(12.3)); Set s=has.keySet(); for(Iterator<String> i=s.iterator();i.hasNext();){ System.out.println(has.get(i.next())); } } }
運轉成果:
2 1 3 12.3