1.1.1.1.5 棧類Stack
Stack類是Vector類的子類。它向用戶提供了堆棧這種高級的數(shù)據(jù)結(jié)構(gòu)。棧的基本特性就是先進(jìn)后出。即先放入棧中的元素將后被推出。Stack類中提供了相應(yīng)方法完成棧的有關(guān)操作。
基本方法:
public Object push(Object Hem)
將Hem壓入棧中,Hem可以是任何類的對象。
public Object pop()
彈出一個對象。
public Object peek()
返回棧頂元素,但不彈出此元素。
public int search(Object obj)
搜索對象obj,返回它所處的位置。
public boolean empty()
判別棧是否為空。
例1.4 StackApp.java使用了上面的各種方法。
例1.4 StackApp.java。
import java.lang.*;
import java.util.*;
public class StackApp{
public static void main(String args[]){
Stack sta=new Stack();
sta.push("Apple");
sta.push("banana");
sta.push("Cherry");
//壓入的為字符串對象
sta.push(new Integer(2));
//壓入的為Integer的對象,值為2
sta.push(new Float(3.5));
//壓入的為Float的對象,值為3.5
System.out.println("The stack is,"+sta);
//對應(yīng)棧sta
System.out.println("The top of stack is:"+sta.peek());
//對應(yīng)棧頂元素,但不將此元素彈出
System.out.println("The position of object Cherry is:"
+sta.search("cherry"));
//打印對象Cherry所處的位置
System.out.print("Pop the element of the stack:");
while(!sta.empty())
System.out.print(sta.pop()+" ");
System.out.println();
//將棧中的元素依次彈出并打印。與第一次打印的sta的結(jié)果比較,可看出棧
//先進(jìn)后出的特點(diǎn)
}
}
運(yùn)行結(jié)果(略)
1.1.1.1.6 哈希表類Hashtable
哈希表是一種重要的存儲方式,也是一種常見的檢索方法。其基本思想是將關(guān)系碼的值作為自變量,通過一定的函數(shù)關(guān)系計(jì)算出對應(yīng)的函數(shù)值,把這個數(shù)值解釋為結(jié)點(diǎn)的存儲地址,將結(jié)點(diǎn)存入計(jì)算得到存儲地址所對應(yīng)的存儲單元。檢索時采用檢索關(guān)鍵碼的方法,F(xiàn)在哈希表有一套完整的算法來進(jìn)行插入、刪除和解決沖突。在Java中哈希表用于存儲對象,實(shí)現(xiàn)快速檢索。
Java.util.Hashtable提供了種方法讓用戶使用哈希表,而不需要考慮其哈希表真正如何工作。
哈希表類中提供了三種構(gòu)造方法,分別是:
public Hashtable()
public Hashtable(int initialcapacity)
public Hashtable(int initialCapacity,float loadFactor)
參數(shù)initialCapacity是Hashtable的初始容量,它的值應(yīng)大于0。loadFactor又稱裝載因子,是一個0.0到0.1之間的float型的浮點(diǎn)數(shù)。它是一個百分比,表明了哈希表何時需要擴(kuò)充,例如,有一哈希表,容量為100,而裝載因子為0.9,那么當(dāng)哈希表90%的容量已被使用時,此哈希表會自動擴(kuò)充成一個更大的哈希表。如果用戶不賦這些參數(shù),系統(tǒng)會自動進(jìn)行處理,而不需要用戶操心。
Hashtable提供了基本的插入、檢索等方法。
■插入
public synchronized void put(Object key,Object value)
給對象value設(shè)定一關(guān)鍵字key,并將其加到Hashtable中。若此關(guān)鍵字已經(jīng)存在,則將此關(guān)鍵字對應(yīng)的舊對象更新為新的對象Value。這表明在哈希表中相同的關(guān)鍵字不可能對應(yīng)不同的對象(從哈希表的基本思想來看,這也是顯而易見的)。
■檢索
public synchronized Object get(Object key)
根據(jù)給定關(guān)鍵字key獲取相對應(yīng)的對象。
public synchronized boolean containsKey(Object key)
判斷哈希表中是否包含關(guān)鍵字key。
public synchronized boolean contains(Object value)
判斷value是否是哈希表中的一個元素。
■刪除
public synchronized object remove(object key)
從哈希表中刪除關(guān)鍵字key所對應(yīng)的對象。
public synchronized void clear()
清除哈希表
另外,Hashtalbe還提供方法獲取相對應(yīng)的枚舉集合:
public synchronized Enumeration keys()
返回關(guān)鍵字對應(yīng)的枚舉對象。
public synchronized Enumeration elements()
返回元素對應(yīng)的枚舉對象。
例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);
//創(chuàng)建了一個哈希表的對象hash,初始容量為2,裝載因子為0.8
hash.put("Jiangsu","Nanjing");
//將字符串對象“Jiangsu”給定一關(guān)鍵字“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的內(nèi)容和大小
Enumeration enum1=hash.elements();
System.out.print("The element of hash is: ");
while(enum1.hasMoreElements())
System.out.print(enum1.nextElement()+" ");
System.out.println();
//依次打印hash中的內(nèi)容
if(hash.containsKey("Jiangsu"))
System.out.println("The capatial of Jiangsu is "+hash.get("Jiangsu"));
hash.remove("Beijing");
//刪除關(guān)鍵字Beijing對應(yīng)對象
System.out.println("The hashtable hash2 is: "+hash);
System.out.println("The size of this hash table is "+hash.size());
}
}
運(yùn)行結(jié)果:
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(字典)類的子類。在字典類中就把關(guān)鍵字對應(yīng)到數(shù)據(jù)值。字典類是一個抽象類。在java.util中還有一個類Properties,它是Hashtable的子類。用它可以進(jìn)行與對象屬性相關(guān)的操作。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |