資源描述:
《java的hashtable的用法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、java的hashtable的用法(1)Vector允許我們用一個(gè)數(shù)字從一系列對(duì)象中作出選擇,所以它實(shí)際是將數(shù)字同對(duì)象關(guān)聯(lián)起來(lái)了。但假如我們想根據(jù)其他標(biāo)準(zhǔn)選擇一系列對(duì)象呢?堆棧就是這樣的一個(gè)例子:它的選擇標(biāo)準(zhǔn)是“最后壓入堆棧的東西”。這種“從一系列對(duì)象中選擇”的概念亦可叫作一個(gè)“映射”、“字典”或者“關(guān)聯(lián)數(shù)組”。從概念上講,它看起來(lái)象一個(gè)Vector,但卻不是通過(guò)數(shù)字來(lái)查找對(duì)象,而是用另一個(gè)對(duì)象來(lái)查找它們!這通常都屬于一個(gè)程序中的重要進(jìn)程。在Java中,這個(gè)概念具體反映到抽象類(lèi)Dictionary身上。該類(lèi)的接口是非常直觀的size()告
2、訴我們其中包含了多少元素;isEmpty()判斷是否包含了元素(是則為true);put(Objectkey,Objectvalue)添加一個(gè)值(我們希望的東西),并將其同一個(gè)鍵關(guān)聯(lián)起來(lái)(想用于搜索它的東西);get(Objectkey)獲得與某個(gè)鍵對(duì)應(yīng)的值;而remove(ObjectKey)用于從列表中刪除“鍵-值”對(duì)。還可以使用枚舉技術(shù):keys()產(chǎn)生對(duì)鍵的一個(gè)枚舉(Enumeration);而elements()產(chǎn)生對(duì)所有值的一個(gè)枚舉。這便是一個(gè)Dictionary(字典)的全部。Dictionary的實(shí)現(xiàn)過(guò)程并不麻煩。下面列出
3、一種簡(jiǎn)單的方法,它使用了兩個(gè)Vector,一個(gè)用于容納鍵,另一個(gè)用來(lái)容納值://:AssocArray.java//SimpleversionofaDictionaryimportjava.util.*;publicclassAssocArrayextendsDictionary{privateVectorkeys=newVector();privateVectorvalues=newVector();publicintsize(){returnkeys.size();}publicbooleanisEmpty(){returnkeys.
4、isEmpty();}publicObjectput(Objectkey,Objectvalue){keys.addElement(key);values.addElement(value);returnkey;}publicObjectget(Objectkey){intindex=keys.indexOf(key);//indexOf()Returns-1ifkeynotfound:if(index==-1)returnnull;returnvalues.elementAt(index);}publicObjectremove(Obj
5、ectkey){intindex=keys.indexOf(key);if(index==-1)returnnull;keys.removeElementAt(index);Objectreturnval=values.elementAt(index);values.removeElementAt(index);returnreturnval;}publicEnumerationkeys(){returnkeys.elements();}publicEnumerationelements(){returnvalues.elements()
6、;}//Testit:publicstaticvoidmain(String[]args){AssocArrayaa=newAssocArray();for(charc='a';c<='z';c++)aa.put(String.valueOf(c),String.valueOf(c).toUpperCase());char[]ca={'a','e','i','o','u'};for(inti=0;i7、[i])));}}///:~在對(duì)AssocArray的定義中,我們注意到的第一個(gè)問(wèn)題是它“擴(kuò)展”了字典。這意味著AssocArray屬于Dictionary的一種類(lèi)型,所以可對(duì)其發(fā)出與Dictionary一樣的請(qǐng)求。如果想生成自己的Dictionary,而且就在這里進(jìn)行,那么要做的全部事情只是填充位于Dictionary內(nèi)的所有方法(而且必須覆蓋所有方法,因?yàn)樗鼈儭龢?gòu)建器外——都是抽象的)。Vectorkey和value通過(guò)一個(gè)標(biāo)準(zhǔn)索引編號(hào)鏈接起來(lái)。也就是說(shuō),如果用“roof”的一個(gè)鍵以及“blue”的一個(gè)值調(diào)用put()——假定我們
8、準(zhǔn)備將一個(gè)房子的各部分與它們的油漆顏色關(guān)聯(lián)起來(lái),而且AssocArray里已有100個(gè)元素,那么“roof”就會(huì)有101個(gè)鍵元素,而“blue”有101個(gè)值元素。而且要注意一下get(),假如