簡述Java編程語言對象的容納
如果一個(gè)程序只含有數(shù)量固定的對象,而且已知它們存在的時(shí)間,那這個(gè)程序是相當(dāng)簡單的。
數(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)確類型,否則使用的過程中會(huì)出異常。而迭代器可以解決這個(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會(huì)返回序列中的第一個(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
哈希表是一種重要的存儲(chǔ)方式,也是一種常見的檢索方法。其基本思想是將關(guān)系碼的值作為自變量,通過一定的函數(shù)關(guān)系計(jì)算出對應(yīng)的函數(shù)值,把這個(gè)數(shù)值解釋為結(jié)點(diǎn)的存儲(chǔ)地址,將結(jié)點(diǎn)存入計(jì)算得到存儲(chǔ)地址所對應(yīng)的存儲(chǔ)單元。檢索時(shí)采用檢索關(guān)鍵碼的方法?,F(xiàn)在哈希表有一套完整的算法來進(jìn)行插入、刪除和解決沖突。在Java中哈希表用于存儲(chǔ)對象,實(shí)現(xiàn)快速檢索。
總結(jié)
以上所述就是本文關(guān)于Java編程中對象的容納的全部介紹,希望對大家有所幫助。
詳細(xì)實(shí)例可以參考:Java編程思想對象的容納實(shí)例詳解
相關(guān)文章
Swagger3.0 整合spring boot2.7x避免swagger2.0與boot2.7沖突
這篇文章主要介紹了Swagger3.0 整合spring boot2.7x避免swagger2.0與boot2.7沖突問題,通過注釋掉2.0引入的倆包,直接引入3.0,文中結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-10-10Elasticsearch索引庫和文檔的相關(guān)操作詳細(xì)指南
這篇文章主要給大家介紹了關(guān)于Elasticsearch索引庫和文檔的相關(guān)操作的相關(guān)資料,Elasticsearch是用Java開發(fā)并且是當(dāng)前最流行的開源的企業(yè)級搜索引擎,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11探索Java中的equals()和hashCode()方法_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了探索Java中的equals()和hashCode()方法的相關(guān)資料,需要的朋友可以參考下2017-05-05你應(yīng)該知道的21個(gè)Java核心技術(shù)
Java的21個(gè)核心技術(shù)點(diǎn),你知道嗎?這篇文章主要為大家詳細(xì)介紹了Java核心技術(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Java中@DateTimeFormat注解與@JsonFormat注解的使用方式
這篇文章主要介紹了Java中@DateTimeFormat注解與@JsonFormat注解的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08spring boot 項(xiàng)目中使用thymeleaf模板的案例分析
這篇文章主要介紹了spring boot 項(xiàng)目中使用thymeleaf模板的案例分析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09