Java 工具包中所提供的數(shù)據(jù)結(jié)構(gòu)非常強(qiáng)大并且有很多的功能。這些數(shù)據(jù)結(jié)構(gòu)包含以下的接口和類:
現(xiàn)在這些類都是舊的了, Java-2 已經(jīng)引入了一種新的框架叫做 Collections Framework,在下一個(gè)章節(jié)中來講解它。
枚舉接口本身并不是一個(gè)數(shù)據(jù)結(jié)構(gòu),但是它在其他數(shù)據(jù)結(jié)構(gòu)中非常重要。 The Enumeration 接口定義了一種方法可以從一個(gè)數(shù)據(jù)結(jié)構(gòu)中連續(xù)獲取元素。
例如,Enumeration 定義了一個(gè)叫做 nextElement 的方法,它可以用來在一個(gè)包含很多元素的數(shù)據(jù)結(jié)構(gòu)中獲得下一個(gè)元素。
BitSet 類實(shí)現(xiàn)了一組 bits 或 flags,可以被獨(dú)立的設(shè)置和清除。
在你需要保存一組布爾值的時(shí)候這個(gè)類非常有用;你只需要給每個(gè)值或集合賦值一個(gè) bit 并且可以視情況設(shè)置或清除它。
Vector 類和傳統(tǒng)的 Java 數(shù)組類似,但是它可以增添新的元素。
和數(shù)組一樣,Vector 對(duì)象的元素可以通過下標(biāo)序號(hào)來訪問。
對(duì)于使用 Vector 類很好的是,在創(chuàng)建的時(shí)候不用擔(dān)心去設(shè)置一個(gè)特定的集合大小;當(dāng)必要的時(shí)候,它可以自動(dòng)收縮和擴(kuò)張。
Stack 類中的元素后進(jìn)先出(LIFO)。
你可以簡(jiǎn)單認(rèn)為 stack 就是一個(gè)對(duì)象的垂直堆棧;當(dāng)你添加一個(gè)新元素的時(shí)候,它就位于其它元素的頂部。
當(dāng)你將一個(gè)元素移出 stack,從棧的頂部開始移出。換句話說,加進(jìn)棧的最后一個(gè)元素會(huì)被最先移除。
Dictionary 類是一個(gè)定義了鍵值對(duì)映射這種數(shù)據(jù)結(jié)構(gòu)的抽象類。
當(dāng)你想通過一個(gè)特殊的鍵來訪問數(shù)據(jù)而不是通過一個(gè)整數(shù)下標(biāo)時(shí)最好使用 Dictionary 這個(gè)類。
因?yàn)?Dictionary 類是抽象的,它只提供了鍵值對(duì)映射的數(shù)據(jù)結(jié)構(gòu)框架而不是一個(gè)具體的實(shí)現(xiàn)。
Hashtable 類提供了一種組織數(shù)據(jù)的方式,依賴于一些用戶自定義的鍵。
例如,在一個(gè)地址列表的 hash table 中,你可以依賴于像 ZIP code 這種鍵來存儲(chǔ)和排序數(shù)據(jù)而不是依賴于一個(gè)人的名字。
在 hash table 中鍵的特殊含義完全依賴于 hash table 的用途和它所包含的數(shù)據(jù)。
Properties 是 Hashtable 的一個(gè)子類。它用來包含值的列表,在這個(gè)列表中鍵是一個(gè)字符串并且值也是一個(gè)字符串。
Properties 類被很多其它 Java 類使用。例如,當(dāng)獲取環(huán)境變量值時(shí),它是 System.getProperties( ) 這個(gè)方法返回值的對(duì)象類型。