如果一個(gè)程序只含有數(shù)量固定的對象,而且已知它們存在的時(shí)間,那這個(gè)程序是相當(dāng)簡單的。
目前創(chuàng)新互聯(lián)已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、會昌網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
數(shù)組
容納對象有很多方式,數(shù)組是其中最為普遍的一種,它主要有如下兩個(gè)特點(diǎn):效率和類型。對于Java來說,為保存和訪問一系列對象(實(shí)際是對象的句柄),最有效率的方法莫過于數(shù)組。數(shù)組實(shí)際是一個(gè)簡單的線性序列,因此訪問速度非常的快,但是它也存在一些限制,如數(shù)組的大小是固定的,并且不可以在“存在時(shí)間”內(nèi)發(fā)生改變。
對于基本數(shù)據(jù)類型構(gòu)成的數(shù)組,其運(yùn)作類型跟對象數(shù)組相似,所不同的是前者里面保存的不是對象的句柄,而是實(shí)際的數(shù)值。
集合
編程的時(shí)候,通常不知道究竟需要保存多少對象,有時(shí)甚至想用更復(fù)雜的方式來保存對象,為解決這樣的問題,Java提供了幾種“集合類”:Vector(矢量),BitSet(位集),Stack(堆棧)以及HashTable(散列表)。
集合的缺點(diǎn):丟失了類型信息。它容納的實(shí)際上是類型為Object的對象的句柄。
枚舉器(迭代器)
用集合保存對象后再訪問,需要事先知道集合中對象的準(zhǔn)確類型,否則使用的過程中會出異常。而迭代器可以解決這個(gè)問題。迭代器是一個(gè)對象,其作用是遍歷一系列對象,并選擇那個(gè)序列中的每個(gè)對象,同時(shí)不讓客戶程序員知道或關(guān)注那個(gè)序列的基礎(chǔ)結(jié)構(gòu)。
Java中的Enumeration就是一個(gè)典型的迭代器,主要用來干如下事情:
(1)用一個(gè)名為Elements的方法要求集合為我們提供一個(gè)Enumeration,首次調(diào)用其NextElements時(shí),這個(gè)Enumeration會返回序列中的第一個(gè)元素。
(2)用NextElements獲取下一個(gè)對象。
(3)用HasMoreElements檢查是否有更多的對象。
集合的類型:
1. Vector
Vector 類可實(shí)現(xiàn)可增長的對象數(shù)組。與數(shù)組一樣,它包含可以使用整數(shù)索引進(jìn)行訪問的組件。但是,Vector 的大小可以根據(jù)需要增大或縮小,以適應(yīng)創(chuàng)建 Vector 后進(jìn)行添加或移除項(xiàng)的操作。
2. BitSet
BitSet實(shí)際是由“二進(jìn)制位”構(gòu)成的一個(gè)Vector。如果希望高效率地保存大量“開-關(guān)”信息,就應(yīng)使用BitSet。位set 的每個(gè)組件都有一個(gè) boolean 值。用非負(fù)的整數(shù)將 BitSet 的位編入索引??梢詫γ總€(gè)編入索引的位進(jìn)行測試、設(shè)置或者清除。通過邏輯與、邏輯或和邏輯異或操作,可以使用一個(gè) BitSet 修改另一個(gè) BitSet 的內(nèi)容。 默認(rèn)情況下,set 中所有位的初始值都是 false。
3. Stack
Stack也稱為“后入先出”集合。Java中的Stack類繼承自Vector類,它通過五個(gè)操作對類 Vector 進(jìn)行了擴(kuò)展 ,允許將向量視為堆棧。它提供了通常的 push 和 pop 操作,以及取堆棧頂點(diǎn)的 peek 方法、測試堆棧是否為空的 empty 方法、在堆棧中查找項(xiàng)并確定到堆棧頂距離的 search 方法。
4. HashTable
哈希表是一種重要的存儲方式,也是一種常見的檢索方法。其基本思想是將關(guān)系碼的值作為自變量,通過一定的函數(shù)關(guān)系計(jì)算出對應(yīng)的函數(shù)值,把這個(gè)數(shù)值解釋為結(jié)點(diǎn)的存儲地址,將結(jié)點(diǎn)存入計(jì)算得到存儲地址所對應(yīng)的存儲單元。檢索時(shí)采用檢索關(guān)鍵碼的方法?,F(xiàn)在哈希表有一套完整的算法來進(jìn)行插入、刪除和解決沖突。在Java中哈希表用于存儲對象,實(shí)現(xiàn)快速檢索。
總結(jié)
以上所述就是本文關(guān)于Java編程中對象的容納的全部介紹,希望對大家有所幫助。
詳細(xì)實(shí)例可以參考:Java編程思想對象的容納實(shí)例詳解