Java-實用程序設計(西電版)第5章-容器類_第1頁
Java-實用程序設計(西電版)第5章-容器類_第2頁
Java-實用程序設計(西電版)第5章-容器類_第3頁
Java-實用程序設計(西電版)第5章-容器類_第4頁
Java-實用程序設計(西電版)第5章-容器類_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

Java實用程序設計(西電版)第5章容器類Java實用程序設計(西電版)第5章容器類5.1容器的概念與相互關(guān)系

Java容器類的對象實例又稱為容器,容器用于保存對象。根據(jù)所存儲的元素的形式,可將容器按照接口不同劃分為兩大類:

(1)Collection:一個由一系列元素組成的序列,其中的元素是指向其他對象的引用。

(2)Map:一個由一系列“鍵值對”組成的序列,允許通過鍵查找值。5.1容器的概念與相互關(guān)系

Java容器類圖5-1容器層次的簡要結(jié)構(gòu)圖5-1容器層次的簡要結(jié)構(gòu)Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類5.2Set接口及其實現(xiàn)

Set不接受重復的元素。JavaSE中提供3種Set容器的實現(xiàn):HashSet、TreeSet和LinkedHashSet。HashSet類采用Hash表實現(xiàn)Set接口,它的查詢速度最快,但其中的元素沒有固定順序;TreeSet類采用紅黑樹結(jié)構(gòu)實現(xiàn)了SortedSet接口,能夠保證元素處于排序狀態(tài);LinkedHashSet類采用Hash表與鏈表結(jié)合的方式實現(xiàn)Set接口,它能夠以插入順序保存元素。5.2Set接口及其實現(xiàn)

SetJava-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類5.3List接口及其實現(xiàn)

與數(shù)組類似地,List也可以建立數(shù)字索引與具體對象的關(guān)聯(lián),區(qū)別在于List可以自動擴充容量。JavaSE中有兩種類型的List:ArrayList和LinkedList。5.3List接口及其實現(xiàn)

與數(shù)組類似地Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類5.4Queue接口及其實現(xiàn)

Queue是一種先進先出(FIFO)的容器。程序從Queue的一端放入對象,從另一端取出對象,對象進入和取出的順序是相同的。在JavaSE中,LinkedList實現(xiàn)了Queue接口,因此LinkedList可以用作Queue的一種實現(xiàn)。5.4Queue接口及其實現(xiàn)

QueueJava-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類5.5Map接口及其實現(xiàn)

Map是一系列“鍵-值”之間的映射關(guān)系,是一種將對象(而非數(shù)字)與對象相關(guān)聯(lián)的設計。在很多情況下,這一設計都能夠有效地解決問題,例如,當我們需要統(tǒng)計一篇論文中的各個英文單詞的個數(shù)時,可創(chuàng)建一個由String映射到Integer的Map。Map的值可以是復雜的結(jié)構(gòu),例如,當希望將一個科學家與其發(fā)表的論文列表建立映射時,可以建立一個Map<Scientist,List<Paper>>。5.5Map接口及其實現(xiàn)

Map是一系列Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類5.6迭代器

List容器可以通過索引對其中的元素進行訪問,Queue可以通過具體方法對隊首的元素進行訪問。對于不同類型的容器,遍歷和操作的方式是不同的。但是在有些時候,需要應對這樣的情況,對于不同類型的容器,我們希望能夠通過同樣的方式執(zhí)行訪問,這樣就不需要根據(jù)不同的容器類型進行不同的編碼。容器的迭代器(Iterator)針對這一需求給出了解決方法。5.6迭代器

List容器迭代器具有如下特征:

(1)迭代器只能單向移動;

(2)使用容器的iterator()方法返回容器的迭代器,迭代器準備返回容器的第一個元素;

(3)使用next()方法獲得序列的下一個元素;

(4)使用hasNext()方法檢查序列中是否還有元素;

(5)使用remove()將迭代器新近返回的元素(即由next()產(chǎn)生的最后一個元素)刪除,因此在調(diào)用remove()之前必須先調(diào)用next()。迭代器具有如下特征:

(1)迭代器只能單向移動;

Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類ListIterator是Iterator的子類型,它只能用于各類List容器的訪問。通過List接口的listIterator方法能夠返回用于List容器的ListIterator。與一般迭代器相比,ListIterator的功能更全面,除了具有Iterator接口所規(guī)定的行為特征以外,它還具有如下特征:

(1)使用hasPrevious()方法檢查序列中是否有前一個元素;

(2)使用nextIndex()方法返回下一次next()方法調(diào)用將要返回的元素的索引;

(3)使用previous()方法返回序列中的前一個元素;ListIterator是Iterator的子類型,它只(4)使用previousIndex()方法返回下一次previous()方法調(diào)用將要返回的元素的索引;

(5)使用set()方法將上一次next()調(diào)用或previous()調(diào)用所返回的元素替換為參數(shù)所指定的元素;

(6)使用add()方法向序列中下一個next()被訪問元素之前(亦即下一個previous()被訪問元素之后)加入指定的元素。加入元素后,隱含指針在新加入元素之后,即調(diào)用next()的返回結(jié)果不變,而調(diào)用previous()的返回結(jié)果是新加入的元素。(4)使用previousIndex()方法返回下一次Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類5.7容器類的高級話題

1.Comparable接口

Comparable接口為實現(xiàn)這個接口的類的每一個對象提供了一種全序關(guān)系,即如果一個類實現(xiàn)了Comparable接口,那么這個類的任意兩個對象就可以比較大小。這樣的一種全序關(guān)系又稱為這個類的自然順序。實際上,Comparable接口中只有一個compareTo()方法的聲明。這個類中對compareTo()方法的實現(xiàn)就是自然順序的比較方法。5.7容器類的高級話題

1.Compa對compareTo()方法的具體實現(xiàn)應注意以下方面:

(1)如果當前對象小于參數(shù)對象,則返回負數(shù);如果當前對象等于參數(shù)對象,則返回0;如果當前對象大于參數(shù)對象,則返回正數(shù)。

(2)對compareTo()的實現(xiàn)必須保證pareTo(y)的符號與pareTo(x)的符號相反,且pareTo(y)拋出異常,當且僅當pareTo(x)拋出異常。

對compareTo()方法的具體實現(xiàn)應注意以下方面:

(3)自然順序關(guān)系的傳遞性應得到保證,即(pareTo(y)>0&&pareTo(z)>0)蘊含pareTo(z)>0。

(4)實現(xiàn)必須保證pareTo(y)==0能夠蘊含對于任意z,pareTo(z)的符號與pareTo(z)的符號相同。(3)自然順序關(guān)系的傳遞性應得到保證,即(pJava-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類Java-實用程序設計(西電版)第5章-容器類

2.EnumSet與EnumMap

EnumSet中的元素必須來自某個枚舉類型,當創(chuàng)建EnumSet時,必須指定這個枚舉類型。EnumSet的內(nèi)部是由位向量表示的,以保證其高效性。EnumS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論