




已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java SE,第七講,Java中的集合框架,概述,容器類(lèi)類(lèi)庫(kù)的用途是持有對(duì)象,所有的容器都只能保存對(duì)Object的引用。 Collection: 一組獨(dú)立的元素 List: 必須保持元素特定的順序 Set: 不能有重復(fù)元素 Map: 一組成對(duì)的鍵值對(duì)(key-value pair,key and value are all objects)對(duì)象。因此Map 可以返回所有鍵(key)組成的 Set,所有值(value)組成的Collection。,集合框架圖,更多的時(shí)候我們只關(guān)心頂層的接口(interface)和具體的實(shí)現(xiàn)類(lèi)(concrete class),而且不再推薦使用遺留的類(lèi)(如Vector、Hashtable等)??梢詫⑸蠄D簡(jiǎn)化為右圖:,簡(jiǎn)化的集合框架圖,容器中的對(duì)象都是Object,容器中只能容納對(duì)象,不能容納基本類(lèi)型 在將對(duì)象加入容器的時(shí)候就丟失了類(lèi)型信息 在使用容器中的元素前必須要做類(lèi)型轉(zhuǎn)換操作,Java SE的自動(dòng)裝箱(Auto-boxing)與拆箱(Auto-unboxing),基本數(shù)據(jù)類(lèi)型(primitive type)與對(duì)應(yīng)的包裝類(lèi)(wrapper class)之間可以自動(dòng)進(jìn)行轉(zhuǎn)換。 注意關(guān)于null引用的拆箱和相等性“”的判斷,容器中可以容納基本類(lèi)型,Java SE增加了自動(dòng)拆裝箱的特性后,容器中就可以容納基本類(lèi)型了。 把基本類(lèi)型放入容器前自動(dòng)裝箱 從容器中取基本類(lèi)型前自動(dòng)拆箱,Java SE的泛型(Generic type),泛型支持定義帶有類(lèi)型參數(shù)(Parameterized type)的類(lèi),這些參數(shù)由您在實(shí)例化時(shí)指定。泛型為提高大型程序的類(lèi)型安全和可維護(hù)性帶來(lái)了很大的潛力。 泛型在本質(zhì)上是指參數(shù)化類(lèi)型 操作參數(shù)化類(lèi)型的類(lèi),接口或者方法被稱作泛型,如泛型類(lèi)或泛型方法。,Point.java,限定容器中能持有的對(duì)象類(lèi)型,Java SE增加范性機(jī)制后,就可以限定容器中能持有的對(duì)象類(lèi)型。 對(duì)象放入容器后不會(huì)自動(dòng)丟失類(lèi)型信息 從容器中取對(duì)象不需要轉(zhuǎn)型 類(lèi)型安全,減少開(kāi)發(fā)的復(fù)雜度,迭代器(Iterator),遍歷并選擇序列中的對(duì)象。客戶端程序員不關(guān)心序列底層的結(jié)構(gòu)。 集合對(duì)象的iterator()方法要求容器返回一個(gè)Iterator。第一次調(diào)用Iterator的next()方法時(shí),它返回序列的第一個(gè)元素 。 使用next()獲得序列中的下一個(gè)元素。而且只能向下移動(dòng) 使用hasNext()檢查序列中是否還有元素 使用remove()將上一次返回的元素從迭代器中移除,List 接口,次序是 List 最重要的特點(diǎn);它保證維護(hù)元素特定的順序 。 ArrayList,由數(shù)組實(shí)現(xiàn)的List。允許對(duì)元素進(jìn)行快速隨機(jī)訪問(wèn),但是向List 中間插入與移除元素的速度很慢 。 LinkedList,對(duì)順序訪問(wèn)進(jìn)行了優(yōu)化,向 List 中間插入與刪除的開(kāi)銷(xiāo)并不大。隨機(jī)訪問(wèn)則相對(duì)較慢 。,TestLinkedList.java,TestArrayList.java,Set 接口,存入 Set 的每個(gè)元素都必須是唯一的。因?yàn)镾et 不保存重復(fù)元素,加入 Set 的元素必須定義equals()方法以確保對(duì)象的唯一性。Set 接口不保證維護(hù)元素的次序 。 HashSet:為快速查找設(shè)計(jì)的Set。存入HashSet 的對(duì)象必須定義hashCode() 重載equals()方法時(shí)永遠(yuǎn)要重載hashCode()方法。否則的話會(huì)導(dǎo)致類(lèi)與所有基于散列的集合一起使用時(shí)不能正常工作,這些集合包括HashSet、HashMap和Hashtable 。,Set 接口,java.lang.Object規(guī)范的約定 如果在應(yīng)用程序執(zhí)行期間,用于對(duì)象的equals()方法中的信息不被修改,那么對(duì)同一對(duì)象的多次調(diào)用,hashCode()方法總是返回相同的整數(shù)。這個(gè)整數(shù)不要求在同一應(yīng)用程序的不同執(zhí)行間保持一致 。 如果兩個(gè)對(duì)象按照equals()方法是相同的,那么對(duì)這兩個(gè)對(duì)象的任一個(gè)調(diào)用hashCode()方法,必須要產(chǎn)生同樣的整數(shù)結(jié)果 如果兩個(gè)對(duì)象根據(jù)equals()方法不相同,那么對(duì)這兩個(gè)對(duì)象中的任一個(gè)對(duì)象調(diào)用hashCode()方法,不要求產(chǎn)生兩個(gè)不同的整數(shù)結(jié)果。但是,為不相等的對(duì)象產(chǎn)生不同的整數(shù)結(jié)果可以提高h(yuǎn)ash表的性能 。,PhoneNumber.java,Set 接口,LinkedHashSet:具有 HashSet 的查詢速度,同時(shí)使用鏈表維護(hù)元素的次序,使得看起來(lái)元素是以插入的順序保存的。 SortedSet:保持次序的 Set,底層為樹(shù)結(jié)構(gòu)。使用它可以從Set中提取有序的序列 。 TreeSet是接口SortedSet的唯一實(shí)現(xiàn)類(lèi),SortedSet的意思是“按比較函數(shù)對(duì)元素排序”,而不是指“元素插入的次序”。插入到SortedSet中的元素必須實(shí)現(xiàn)java.lang.Comparable接口(或者能夠被一個(gè)特定的Comporator接受);并且所有的元素必須必須可以相互比較,否則會(huì)拋出ClassCastException。強(qiáng)烈建議compareTo()方法的相等測(cè)試與equals()方法有同樣的結(jié)果 。,TestSortedSet.java,PhoneNumber2.java,Map 接口,ArrayList 使用數(shù)字從對(duì)象序列中選擇元素,因此它在數(shù)字與對(duì)象之間建立了關(guān)聯(lián)。Map維護(hù)“鍵值對(duì)”的關(guān)聯(lián)性,使你可以通過(guò)“鍵”查找“值” 。 LinkedHashMap:類(lèi)似于 HashMap,但是迭代遍歷它時(shí),取得“鍵值對(duì)”的順序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap 慢一點(diǎn)。而在迭代訪問(wèn)時(shí)反而更快,因?yàn)樗褂面湵砭S護(hù)內(nèi)部次序 。 SortedMap:確?!版I值對(duì)”中的“鍵”處于排序狀態(tài),其中TreeMap是其唯一實(shí)現(xiàn) 。,TestLinkedHashMap.java,HashMap & Hashtable,HashMap是Hashtable的輕量級(jí)實(shí)現(xiàn)(非線程安全的實(shí)現(xiàn)),他們都實(shí)現(xiàn)了Map接口,主要區(qū)別在于 : HashMap允許空(null)鍵值(key),而Hashtable不允許。HashMap由于非線程安全,效率上要高于Hashtable 。 HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey。因?yàn)閏ontains方法容易讓人引起誤解 。,TestHashMap.java,HashMap & Hashtable,Hashtable繼承自Dictionary類(lèi),而HashMap是Java1.2引進(jìn)的Map 接口的一個(gè)實(shí)現(xiàn)。最大的不同是Hashtable的方法是Synchronize的,而HashMap不是,在多個(gè)線程訪問(wèn)Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap 就必須為之提供同步 。 Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會(huì)有很大的差異 。,ArrayList & Vector,ArrayList與Vector都是使用數(shù)組方式存
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZJCX 0045-2024 食用菌干制品
- T-ZGZS 0411-2024 T-CCPITCSC 150-2024 綠色會(huì)展廢棄物管理規(guī)范
- T-ZMDS 10024-2024 手術(shù)導(dǎo)航設(shè)備配準(zhǔn)技術(shù)要求及試驗(yàn)方法
- 2025年度高端辦公空間無(wú)償租賃合作協(xié)議
- 2025年度能源企業(yè)質(zhì)押貸款擔(dān)保合同
- 二零二五年度企業(yè)辦公用品定制化采購(gòu)合同
- 醫(yī)藥公司二零二五年度員工商業(yè)秘密保密協(xié)議及保密技術(shù)支持服務(wù)協(xié)議
- 2025年度村辦公室裝修與農(nóng)村電商市場(chǎng)拓展合作合同
- 二零二五年度酒店加盟店經(jīng)營(yíng)管理合作協(xié)議
- 2025年度物流園區(qū)開(kāi)發(fā)物業(yè)移交與倉(cāng)儲(chǔ)物流服務(wù)協(xié)議
- 五年級(jí)下冊(cè)英語(yǔ)作文訓(xùn)練-外研版(三起)
- 7.2.1 圓柱(課件含動(dòng)畫(huà)演示)-【中職】高一數(shù)學(xué)(高教版2021基礎(chǔ)模塊下冊(cè))
- 《義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)(2022年版)》測(cè)試題+答案
- 便利店門(mén)店運(yùn)營(yíng)手冊(cè)
- 江蘇省南通市海安中學(xué)2025屆高一下生物期末綜合測(cè)試試題含解析
- 《行政倫理學(xué)教程(第四版)》課件 第1、2章 行政倫理的基本觀念、行政倫理學(xué)的思想資源
- 拆除工程施工拆除進(jìn)度安排
- 絕緣技術(shù)監(jiān)督上崗員:廠用電設(shè)備技術(shù)監(jiān)督考試資料一
- 衛(wèi)生監(jiān)督村醫(yī)培訓(xùn)課件
- 動(dòng)物的感覺(jué)器官
- 獵頭項(xiàng)目方案
評(píng)論
0/150
提交評(píng)論