Java工具包提供了強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)都哭。在Java中的數(shù)據(jù)結(jié)構(gòu)主要包括以下幾種接口和類:
枚舉(Enumeration)
位集合(BitSet)
向量(Vector)
棧(Stack)
字典(Dictionary)Java Map 接口
哈希表(Hashtable)
屬性(Properties)
一.枚舉(Enumeration)
枚舉(Enumeration)接口雖然它本身不屬于數(shù)據(jù)結(jié)構(gòu),但它在其他數(shù)據(jù)結(jié)構(gòu)的范疇里應(yīng)用很廣卒煞。 枚舉(The Enumeration)接口定義了一種從數(shù)據(jù)結(jié)構(gòu)中取回連續(xù)元素的方式外厂。
例如旅掂,枚舉定義了一個(gè)叫nextElement 的方法张遭,該方法用來得到一個(gè)包含多元素的數(shù)據(jù)結(jié)構(gòu)的下一個(gè)元素瞬项。
Enumeration接口中定義了一些方法,通過這些方法可以枚舉(一次獲得一個(gè))對(duì)象集合中的元素朋沮。
這種傳統(tǒng)接口已被迭代器取代蛇券,雖然Enumeration 還未被遺棄,但在現(xiàn)代代碼中已經(jīng)被很少使用了。盡管如此纠亚,它還是使用在諸如Vector和Properties這些傳統(tǒng)類所定義的方法中塘慕,除此之外,還用在一些API類蒂胞,并且在應(yīng)用程序中也廣泛被使用图呢。 下表總結(jié)了一些Enumeration聲明的方法:
序號(hào)方法描述
1.boolean hasMoreElements( )測試此枚舉是否包含更多的元素。
2.Object nextElement( )如果此枚舉對(duì)象至少還有一個(gè)可提供的元素骗随,則返回此枚舉的下一個(gè)元素岳瞭。
實(shí)例
以下實(shí)例演示了Enumeration的使用:
實(shí)例
以上實(shí)例編譯運(yùn)行結(jié)果如下:
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday。
二.位集合(BitSet)
位集合類實(shí)現(xiàn)了一組可以單獨(dú)設(shè)置和清除的位或標(biāo)志蚊锹。
該類在處理一組布爾值的時(shí)候非常有用,你只需要給每個(gè)值賦值一"位"稚瘾,然后對(duì)位進(jìn)行適當(dāng)?shù)脑O(shè)置或清除牡昆,就可以對(duì)布爾值進(jìn)行操作了。
一個(gè)Bitset類創(chuàng)建一種特殊類型的數(shù)組來保存位值摊欠。BitSet中數(shù)組大小會(huì)隨需要增加丢烘。這和位向量(vector of bits)比較類似。
這是一個(gè)傳統(tǒng)的類些椒,但它在Java 2中被完全重新設(shè)計(jì)播瞳。
BitSet定義了兩個(gè)構(gòu)造方法。
第一個(gè)構(gòu)造方法創(chuàng)建一個(gè)默認(rèn)的對(duì)象:
BitSet()
第二個(gè)方法允許用戶指定初始大小免糕。所有位初始化為0赢乓。
BitSet(int size)
BitSet中實(shí)現(xiàn)了Cloneable接口中定義的方法如下表所列:
方法描述
1.void and(BitSet set)
對(duì)此目標(biāo)位 set 和參數(shù)位 set 執(zhí)行邏輯與操作。
2.void andNot(BitSet set)
清除此 BitSet 中所有的位石窑,其相應(yīng)的位在指定的 BitSet 中已設(shè)置牌芋。
3.int cardinality( )
返回此 BitSet 中設(shè)置為 true 的位數(shù)。
4.void clear( )
將此 BitSet 中的所有位設(shè)置為 false松逊。
5.void clear(int index)
將索引指定處的位設(shè)置為 false躺屁。
6.void clear(int startIndex, int endIndex)
將指定的 startIndex(包括)到指定的 toIndex(不包括)范圍內(nèi)的位設(shè)置為 false。
7.Object clone( )
復(fù)制此 BitSet经宏,生成一個(gè)與之相等的新 BitSet犀暑。
8.boolean equals(Object bitSet)
將此對(duì)象與指定的對(duì)象進(jìn)行比較。
9.void flip(int index)
將指定索引處的位設(shè)置為其當(dāng)前值的補(bǔ)碼烁兰。
10.void flip(int startIndex, int endIndex)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)范圍內(nèi)的每個(gè)位設(shè)置為其當(dāng)前值的補(bǔ)碼耐亏。11.boolean get(int index)
返回指定索引處的位值。
12.BitSet get(int startIndex, int endIndex)
返回一個(gè)新的 BitSet沪斟,它由此 BitSet 中從 fromIndex(包括)到 toIndex(不包括)范圍內(nèi)的位組成苹熏。13.int hashCode( )
返回此位 set 的哈希碼值。
14.boolean intersects(BitSet bitSet)
如果指定的 BitSet 中有設(shè)置為 true 的位,并且在此 BitSet 中也將其設(shè)置為 true轨域,則返回 true袱耽。15.boolean isEmpty( )
如果此 BitSet 中沒有包含任何設(shè)置為 true 的位,則返回 true干发。
16.int length( )
返回此 BitSet 的"邏輯大小":BitSet 中最高設(shè)置位的索引加 1朱巨。
17.int nextClearBit(int startIndex)
返回第一個(gè)設(shè)置為 false 的位的索引,這發(fā)生在指定的起始索引或之后的索引上枉长。
18.int nextSetBit(int startIndex)
返回第一個(gè)設(shè)置為 true 的位的索引冀续,這發(fā)生在指定的起始索引或之后的索引上。
19.void or(BitSet bitSet)
對(duì)此位 set 和位 set 參數(shù)執(zhí)行邏輯或操作必峰。
20.void set(int index)
將指定索引處的位設(shè)置為 true洪唐。
21.void set(int index, boolean v)
將指定索引處的位設(shè)置為指定的值。
22.void set(int startIndex, int endIndex)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)范圍內(nèi)的位設(shè)置為 true吼蚁。
23.void set(int startIndex, int endIndex, boolean v)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)范圍內(nèi)的位設(shè)置為指定的值凭需。
24.int size( )
返回此 BitSet 表示位值時(shí)實(shí)際使用空間的位數(shù)。
25.String toString( )
返回此位 set 的字符串表示形式肝匆。
26.void xor(BitSet bitSet)
對(duì)此位 set 和位 set 參數(shù)執(zhí)行邏輯異或操作粒蜈。
實(shí)例
下面的程序說明這個(gè)數(shù)據(jù)結(jié)構(gòu)支持的幾個(gè)方法:
實(shí)例
以上實(shí)例編譯運(yùn)行結(jié)果如下:
Initial pattern in bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
Initial pattern in bits2:
{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}
bits2 AND bits1:
{2, 4, 6, 8, 12, 14}
bits2 OR bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
bits2 XOR bits1:
{}
三.向量(Vector)
向量(Vector)類和傳統(tǒng)數(shù)組非常相似,但是Vector的大小能根據(jù)需要?jiǎng)討B(tài)的變化旗国。
和數(shù)組一樣枯怖,Vector對(duì)象的元素也能通過索引訪問。
使用Vector類最主要的好處就是在創(chuàng)建對(duì)象的時(shí)候不必給對(duì)象指定大小能曾,它的大小會(huì)根據(jù)需要?jiǎng)討B(tài)的變化度硝。
Vector 類實(shí)現(xiàn)了一個(gè)動(dòng)態(tài)數(shù)組。和 ArrayList 很相似寿冕,但是兩者是不同的:
Vector 是同步訪問的塘淑。
Vector 包含了許多傳統(tǒng)的方法,這些方法不屬于集合框架蚂斤。
Vector 主要用在事先不知道數(shù)組的大小存捺,或者只是需要一個(gè)可以改變大小的數(shù)組的情況。
Vector 類支持 4 種構(gòu)造方法曙蒸。
第一種構(gòu)造方法創(chuàng)建一個(gè)默認(rèn)的向量捌治,默認(rèn)大小為 10:
Vector()
第二種構(gòu)造方法創(chuàng)建指定大小的向量。
Vector(int size)
第三種構(gòu)造方法創(chuàng)建指定大小的向量纽窟,并且增量用 incr 指定肖油。增量表示向量每次增加的元素?cái)?shù)目。
Vector(int size,int incr)
第四種構(gòu)造方法創(chuàng)建一個(gè)包含集合 c 元素的向量:
Vector(Collection c)
除了從父類繼承的方法外 Vector 還定義了以下方法:
方法描述
1.void add(int index, Object element)?
在此向量的指定位置插入指定的元素臂港。
2.boolean add(Object o)?
將指定元素添加到此向量的末尾森枪。
3.boolean addAll(Collection c)?
將指定 Collection 中的所有元素添加到此向量的末尾视搏,按照指定 collection 的迭代器所返回的順序添加這些元素。
4.boolean addAll(int index, Collection c)?
在指定位置將指定 Collection 中的所有元素插入到此向量中县袱。
5.void addElement(Object obj)?
將指定的組件添加到此向量的末尾浑娜,將其大小增加 1。
6.int capacity()?
返回此向量的當(dāng)前容量式散。
7.void clear()?
從此向量中移除所有元素筋遭。
8.Object clone()?
返回向量的一個(gè)副本。
9.boolean contains(Object elem)?
如果此向量包含指定的元素暴拄,則返回 true漓滔。
10.boolean containsAll(Collection c)?
如果此向量包含指定 Collection 中的所有元素,則返回 true乖篷。
11.void copyInto(Object[] anArray)?
將此向量的組件復(fù)制到指定的數(shù)組中响驴。
12.Object elementAt(int index)?
返回指定索引處的組件。
13.Enumeration elements()?
返回此向量的組件的枚舉撕蔼。
14.void ensureCapacity(int minCapacity)?
增加此向量的容量(如有必要)豁鲤,以確保其至少能夠保存最小容量參數(shù)指定的組件數(shù)。
15.boolean equals(Object o)?
比較指定對(duì)象與此向量的相等性罕邀。
16.Object firstElement()?
返回此向量的第一個(gè)組件(位于索引 0) 處的項(xiàng))。
17.Object get(int index)?
返回向量中指定位置的元素养距。
18.int hashCode()?
返回此向量的哈希碼值诉探。
19.int indexOf(Object elem)?
返回此向量中第一次出現(xiàn)的指定元素的索引,如果此向量不包含該元素棍厌,則返回 -1肾胯。
20.int indexOf(Object elem, int index)?
返回此向量中第一次出現(xiàn)的指定元素的索引,從 index 處正向搜索耘纱,如果未找到該元素敬肚,則返回 -1。21.void insertElementAt(Object obj, int index)?
將指定對(duì)象作為此向量中的組件插入到指定的 index 處束析。
22.boolean isEmpty()?
測試此向量是否不包含組件艳馒。
23.Object lastElement()?
返回此向量的最后一個(gè)組件。
24.int lastIndexOf(Object elem)?
返回此向量中最后一次出現(xiàn)的指定元素的索引员寇;如果此向量不包含該元素弄慰,則返回 -1。
25.int lastIndexOf(Object elem, int index)?
返回此向量中最后一次出現(xiàn)的指定元素的索引蝶锋,從 index 處逆向搜索陆爽,如果未找到該元素,則返回 -1扳缕。
26.Object remove(int index)?
移除此向量中指定位置的元素慌闭。
27.boolean remove(Object o)?
移除此向量中指定元素的第一個(gè)匹配項(xiàng)别威,如果向量不包含該元素,則元素保持不變驴剔。
28.boolean removeAll(Collection c)?
從此向量中移除包含在指定 Collection 中的所有元素省古。
29.void removeAllElements()?
從此向量中移除全部組件,并將其大小設(shè)置為零仔拟。
30.boolean removeElement(Object obj)?
從此向量中移除變量的第一個(gè)(索引最小的)匹配項(xiàng)衫樊。
31.void removeElementAt(int index)?
刪除指定索引處的組件。
32.protected void removeRange(int fromIndex, int toIndex)
從此 List 中移除其索引位于 fromIndex(包括)與 toIndex(不包括)之間的所有元素利花。
33.boolean retainAll(Collection c)?
在此向量中僅保留包含在指定 Collection 中的元素科侈。
34.Object set(int index, Object element)
用指定的元素替換此向量中指定位置處的元素。
35.void setElementAt(Object obj, int index)?
將此向量指定 index 處的組件設(shè)置為指定的對(duì)象炒事。
36.void setSize(int newSize)?
設(shè)置此向量的大小臀栈。
37.int size()?
返回此向量中的組件數(shù)。
38.List subList(int fromIndex, int toIndex)?
返回此 List 的部分視圖挠乳,元素范圍為從 fromIndex(包括)到 toIndex(不包括)权薯。
39.Object[] toArray()
返回一個(gè)數(shù)組,包含此向量中以恰當(dāng)順序存放的所有元素睡扬。
40.Object[] toArray(Object[] a)?
返回一個(gè)數(shù)組盟蚣,包含此向量中以恰當(dāng)順序存放的所有元素;返回?cái)?shù)組的運(yùn)行時(shí)類型為指定數(shù)組的類型卖怜。41.String toString()?
返回此向量的字符串表示形式屎开,其中包含每個(gè)元素的 String 表示形式。
42.void trimToSize()?
對(duì)此向量的容量進(jìn)行微調(diào)马靠,使其等于向量的當(dāng)前大小奄抽。
實(shí)例
下面的程序說明這個(gè)集合所支持的幾種方法:
import java.util.*;
public class VectorDemo {
public static void main(String args[]) {
// initial size is 3, increment is 2
Vector v = new Vector(3, 2);
System.out.println("Initial size: " + v.size());
System.out.println("Initial capacity: " +
v.capacity());
v.addElement(new Integer(1));
v.addElement(new Integer(2));
v.addElement(new Integer(3));
v.addElement(new Integer(4));
System.out.println("Capacity after four additions: " +
v.capacity());
v.addElement(new Double(5.45));
System.out.println("Current capacity: " +
v.capacity());
v.addElement(new Double(6.08));
v.addElement(new Integer(7));
System.out.println("Current capacity: " +
v.capacity());
v.addElement(new Float(9.4));
v.addElement(new Integer(10));
System.out.println("Current capacity: " +
v.capacity());
v.addElement(new Integer(11));
v.addElement(new Integer(12));
System.out.println("First element: " +
(Integer)v.firstElement());
System.out.println("Last element: " +
(Integer)v.lastElement());
if(v.contains(new Integer(3)))
System.out.println("Vector contains 3.");
// enumerate the elements in the vector.
Enumeration vEnum = v.elements();
System.out.println("\nElements in vector:");
while(vEnum.hasMoreElements())
System.out.print(vEnum.nextElement() + " ");
System.out.println();
}
}
以上實(shí)例編譯運(yùn)行結(jié)果如下:
Initial size: 0
Initial capacity: 3
Capacity after four additions: 5
Current capacity: 5
Current capacity: 7
Current capacity: 9
First element: 1
Last element: 12
Vector contains 3.
Elements in vector:
1 2 3 4 5.45 6.08 7 9.4 10 11 12
四.棧(Stack)
棧(Stack)實(shí)現(xiàn)了一個(gè)后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu)。
你可以把棧理解為對(duì)象的垂直分布的棧甩鳄,當(dāng)你添加一個(gè)新元素時(shí)逞度,就將新元素放在其他元素的頂部。
當(dāng)你從棧中取元素的時(shí)候妙啃,就從棧頂取一個(gè)元素档泽。換句話說,最后進(jìn)棧的元素最先被取出揖赴。
棧是Vector的一個(gè)子類茁瘦,它實(shí)現(xiàn)了一個(gè)標(biāo)準(zhǔn)的后進(jìn)先出的棧。
堆棧只定義了默認(rèn)構(gòu)造函數(shù)储笑,用來創(chuàng)建一個(gè)空棧甜熔。 堆棧除了包括由Vector定義的所有方法,也定義了自己的一些方法突倍。
Stack()
除了由Vector定義的所有方法腔稀,自己也定義了一些方法:
方法描述
1.boolean empty()?
測試堆棧是否為空盆昙。
2.Object peek( )
查看堆棧頂部的對(duì)象,但不從堆棧中移除它焊虏。
3.Object pop( )
移除堆棧頂部的對(duì)象淡喜,并作為此函數(shù)的值返回該對(duì)象。
4.Object push(Object element)
把項(xiàng)壓入堆棧頂部诵闭。
5.int search(Object element)
返回對(duì)象在堆棧中的位置炼团,以 1 為基數(shù)。
實(shí)例
下面的程序說明這個(gè)集合所支持的幾種方法
實(shí)例
以上實(shí)例編譯運(yùn)行結(jié)果如下:
stack: [ ]
push(42)
stack: [42]
push(66)
stack: [42, 66]
push(99)
stack: [42, 66, 99]
pop -> 99
stack: [42, 66]
pop -> 66
stack: [42]
pop -> 42
stack: [ ]
pop -> empty stack
五.字典(Dictionary)
字典(Dictionary) 類是一個(gè)抽象類疏尿,它定義了鍵映射到值的數(shù)據(jù)結(jié)構(gòu)瘟芝。
當(dāng)你想要通過特定的鍵而不是整數(shù)索引來訪問數(shù)據(jù)的時(shí)候,這時(shí)候應(yīng)該使用Dictionary褥琐。
由于Dictionary類是抽象類锌俱,所以它只提供了鍵映射到值的數(shù)據(jù)結(jié)構(gòu),而沒有提供特定的實(shí)現(xiàn)敌呈。Dictionary 類是一個(gè)抽象類贸宏,用來存儲(chǔ)鍵/值對(duì),作用和Map類相似磕洪。
給出鍵和值吭练,你就可以將值存儲(chǔ)在Dictionary對(duì)象中。一旦該值被存儲(chǔ)析显,就可以通過它的鍵來獲取它鲫咽。所以和Map一樣, Dictionary 也可以作為一個(gè)鍵/值對(duì)列表叫榕。
Dictionary類已經(jīng)過時(shí)了浑侥。在實(shí)際開發(fā)中姊舵,你可以實(shí)現(xiàn)Map接口來獲取鍵/值的存儲(chǔ)功能晰绎。
Java Map 接口
Map接口中鍵和值一一映射. 可以通過鍵來獲取值。
給定一個(gè)鍵和一個(gè)值括丁,你可以將該值存儲(chǔ)在一個(gè)Map對(duì)象. 之后荞下,你可以通過鍵來訪問對(duì)應(yīng)的值。
當(dāng)訪問的值不存在的時(shí)候史飞,方法就會(huì)拋出一個(gè)NoSuchElementException異常.
當(dāng)對(duì)象的類型和Map里元素類型不兼容的時(shí)候尖昏,就會(huì)拋出一個(gè) ClassCastException異常。
當(dāng)在不允許使用Null對(duì)象的Map中使用Null對(duì)象构资,會(huì)拋出一個(gè)NullPointerException 異常抽诉。
當(dāng)嘗試修改一個(gè)只讀的Map時(shí),會(huì)拋出一個(gè)UnsupportedOperationException異常吐绵。
方法描述
1.void clear( )
從此映射中移除所有映射關(guān)系(可選操作)迹淌。
2.boolean containsKey(Object k)
如果此映射包含指定鍵的映射關(guān)系河绽,則返回 true。
3.boolean containsValue(Object v)
如果此映射將一個(gè)或多個(gè)鍵映射到指定值唉窃,則返回 true耙饰。
4.Set entrySet( )
返回此映射中包含的映射關(guān)系的 Set 視圖。
5.boolean equals(Object obj)
比較指定的對(duì)象與此映射是否相等纹份。
6.Object get(Object k)
返回指定鍵所映射的值苟跪;如果此映射不包含該鍵的映射關(guān)系,則返回 null蔓涧。
7.int hashCode( )
返回此映射的哈希碼值件已。
8.boolean isEmpty( )
如果此映射未包含鍵-值映射關(guān)系,則返回 true蠢笋。
9.Set keySet( )
返回此映射中包含的鍵的 Set 視圖拨齐。
10.Object put(Object k, Object v)
將指定的值與此映射中的指定鍵關(guān)聯(lián)(可選操作)。
11.void putAll(Map m)
從指定映射中將所有映射關(guān)系復(fù)制到此映射中(可選操作)昨寞。
12.Object remove(Object k)
如果存在一個(gè)鍵的映射關(guān)系瞻惋,則將其從此映射中移除(可選操作)。
13.int size( )
返回此映射中的鍵-值映射關(guān)系數(shù)援岩。
14.Collection values( )
返回此映射中包含的值的 Collection 視圖歼狼。
實(shí)例
下面的例子來解釋Map的功能
import java.util.*;
public class CollectionsDemo {
public static void main(String[] args) {
Map m1 = new HashMap();
m1.put("Zara", "8");
m1.put("Mahnaz", "31");
m1.put("Ayan", "12");
m1.put("Daisy", "14");
System.out.println();
System.out.println(" Map Elements");
System.out.print("\t" + m1);
}
}
以上實(shí)例編譯運(yùn)行結(jié)果如下:
Map Elements
{Mahnaz=31, Ayan=12, Daisy=14, Zara=8}
六.哈希表(Hashtable)
Hashtable類提供了一種在用戶定義鍵結(jié)構(gòu)的基礎(chǔ)上來組織數(shù)據(jù)的手段。
例如享怀,在地址列表的哈希表中羽峰,你可以根據(jù)郵政編碼作為鍵來存儲(chǔ)和排序數(shù)據(jù),而不是通過人名添瓷。
哈希表鍵的具體含義完全取決于哈希表的使用情景和它包含的數(shù)據(jù)梅屉。
Hashtable是原始的java.util的一部分, 是一個(gè)Dictionary具體的實(shí)現(xiàn) 鳞贷。
然而坯汤,Java 2 重構(gòu)的Hashtable實(shí)現(xiàn)了Map接口,因此搀愧,Hashtable現(xiàn)在集成到了集合框架中惰聂。它和HashMap類很相似,但是它支持同步咱筛。
像HashMap一樣搓幌,Hashtable在哈希表中存儲(chǔ)鍵/值對(duì)。當(dāng)使用一個(gè)哈希表迅箩,要指定用作鍵的對(duì)象溉愁,以及要鏈接到該鍵的值。
然后饲趋,該鍵經(jīng)過哈希處理拐揭,所得到的散列碼被用作存儲(chǔ)在該表中值的索引罢缸。
Hashtable定義了四個(gè)構(gòu)造方法。第一個(gè)是默認(rèn)構(gòu)造方法:
Hashtable()
第二個(gè)構(gòu)造函數(shù)創(chuàng)建指定大小的哈希表:
Hashtable(int size)
第三個(gè)構(gòu)造方法創(chuàng)建了一個(gè)指定大小的哈希表投队,并且通過fillRatio指定填充比例枫疆。
填充比例必須介于0.0和1.0之間,它決定了哈希表在重新調(diào)整大小之前的充滿程度:
Hashtable(int size,float fillRatio)
第四個(gè)構(gòu)造方法創(chuàng)建了一個(gè)以M中元素為初始化元素的哈希表敷鸦。
哈希表的容量被設(shè)置為M的兩倍息楔。
Hashtable(Map m)
Hashtable中除了從Map接口中定義的方法外,還定義了以下方法:
序號(hào)方法描述
1.void clear( )
將此哈希表清空扒披,使其不包含任何鍵值依。
2.Object clone( )
創(chuàng)建此哈希表的淺表副本。
3.boolean contains(Object value)
測試此映射表中是否存在與指定值關(guān)聯(lián)的鍵碟案。
4.boolean containsKey(Object key)
測試指定對(duì)象是否為此哈希表中的鍵愿险。
5.boolean containsValue(Object value)
如果此 Hashtable 將一個(gè)或多個(gè)鍵映射到此值,則返回 true价说。
6.Enumeration elements( )
返回此哈希表中的值的枚舉辆亏。
7.Object get(Object key)
返回指定鍵所映射到的值,如果此映射不包含此鍵的映射鳖目,則返回 null. 更確切地講扮叨,如果此映射包含滿足 (key.equals(k)) 的從鍵 k 到值 v 的映射,則此方法返回 v领迈;否則彻磁,返回 null。
8.boolean isEmpty( )
測試此哈希表是否沒有鍵映射到值狸捅。
9.Enumeration keys( )
返回此哈希表中的鍵的枚舉衷蜓。
10.Object put(Object key, Object value)
將指定 key 映射到此哈希表中的指定 value。
11.void rehash( )
增加此哈希表的容量并在內(nèi)部對(duì)其進(jìn)行重組尘喝,以便更有效地容納和訪問其元素磁浇。
12.Object remove(Object key)
從哈希表中移除該鍵及其相應(yīng)的值。
13.int size( )
返回此哈希表中的鍵的數(shù)量瞧省。
14.String toString( )
返回此 Hashtable 對(duì)象的字符串表示形式扯夭,其形式為 ASCII 字符 ", " (逗號(hào)加空格)分隔開的鳍贾、括在括號(hào)中的一組條目鞍匾。
實(shí)例
下面的程序說明這個(gè)數(shù)據(jù)結(jié)構(gòu)支持的幾個(gè)方法:
import java.util.*;
public class HashTableDemo {
public static void main(String args[]) {
// Create a hash map
Hashtable balance = new Hashtable();
Enumeration names;
String str;
double bal;
balance.put("Zara", new Double(3434.34));
balance.put("Mahnaz", new Double(123.22));
balance.put("Ayan", new Double(1378.00));
balance.put("Daisy", new Double(99.22));
balance.put("Qadir", new Double(-19.08));
// Show all balances in hash table.
names = balance.keys();
while(names.hasMoreElements()) {
str = (String) names.nextElement();
System.out.println(str + ": " +
balance.get(str));
}
System.out.println();
// Deposit 1,000 into Zara's account
bal = ((Double)balance.get("Zara")).doubleValue();
balance.put("Zara", new Double(bal+1000));
System.out.println("Zara's new balance: " +
balance.get("Zara"));
}
}
以上實(shí)例編譯運(yùn)行結(jié)果如下:
Qadir: -19.08
Zara: 3434.34
Mahnaz: 123.22
Daisy: 99.22
Ayan: 1378.0
Zara's new balance: 4434.34
七.屬性(Properties)
Properties 繼承于 Hashtable.Properties 類表示了一個(gè)持久的屬性集.屬性列表中每個(gè)鍵及其對(duì)應(yīng)值都是一個(gè)字符串。
Properties 類被許多Java類使用骑科。例如橡淑,在獲取環(huán)境變量時(shí)它就作為System.getProperties()方法的返回值。
Properties 繼承于 Hashtable.表示一個(gè)持久的屬性集.屬性列表中每個(gè)鍵及其對(duì)應(yīng)值都是一個(gè)字符串咆爽。
Properties 類被許多Java類使用梁棠。例如置森,在獲取環(huán)境變量時(shí)它就作為System.getProperties()方法的返回值。
Properties 定義如下實(shí)例變量.這個(gè)變量持有一個(gè)Properties對(duì)象相關(guān)的默認(rèn)屬性列表符糊。
Properties defaults;
Properties類定義了兩個(gè)構(gòu)造方法. 第一個(gè)構(gòu)造方法沒有默認(rèn)值凫海。
Properties()
第二個(gè)構(gòu)造方法使用propDefault 作為默認(rèn)值。兩種情況下男娄,屬性列表都為空:
Properties(Properties propDefault)
除了從Hashtable中所定義的方法行贪,Properties定義了以下方法:
序號(hào)方法描述
1.String getProperty(String key)
用指定的鍵在此屬性列表中搜索屬性。
2.String getProperty(String key, String defaultProperty)
用指定的鍵在屬性列表中搜索屬性模闲。
3.void list(PrintStream streamOut)
將屬性列表輸出到指定的輸出流建瘫。
4.void list(PrintWriter streamOut)
將屬性列表輸出到指定的輸出流。
5.void load(InputStream streamIn) throws IOException
從輸入流中讀取屬性列表(鍵和元素對(duì))尸折。
6.Enumeration propertyNames( )
按簡單的面向行的格式從輸入字符流中讀取屬性列表(鍵和元素對(duì))啰脚。
7.Object setProperty(String key, String value)
調(diào)用 Hashtable 的方法 put。
8.void store(OutputStream streamOut, String description)
以適合使用 load(InputStream)方法加載到 Properties 表中的格式实夹,將此 Properties 表中的屬性列表(鍵和元素對(duì))寫入輸出流橄浓。
實(shí)例
下面的程序說明這個(gè)數(shù)據(jù)結(jié)構(gòu)支持的幾個(gè)方法:
實(shí)例
以上實(shí)例編譯運(yùn)行結(jié)果如下:
The capital of Missouri is Jefferson City.
The capital of Illinois is Springfield.
The capital of Indiana is Indianapolis.
The capital of California is Sacramento.
The capital of Washington is Olympia.
The capital of Florida is Not Found.