




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、J,1,Chapter14 Java集合架構(gòu),Collection接口和AbstractCollection類(lèi) 規(guī)則集Set 比較器接口Comparator 線(xiàn)性表List Map,J,2,簡(jiǎn)介,幾種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu): 鏈表、堆棧、隊(duì)列、堆、優(yōu)先隊(duì)列等。 集合(collection):存儲(chǔ)一組對(duì)象的容器對(duì)象。 Java集合架構(gòu)支持三種類(lèi)型的集合: 規(guī)則集(set)、線(xiàn)性表(list)、圖(map) Set:存儲(chǔ)一組互不相同的元素。 List:存儲(chǔ)一組順序排列的元素。 Map:存儲(chǔ)一組均有一個(gè)關(guān)聯(lián)鍵的對(duì)象。 注意:java集合架構(gòu)中的類(lèi)都實(shí)現(xiàn)了Cloneable和Serializable接口。 本
2、章所學(xué)的類(lèi)位于:java.util包中。 重點(diǎn):如何使用集合架構(gòu)中的接口和類(lèi)。,J,3,主要接口和類(lèi)的關(guān)系圖,J,4,主要接口和類(lèi)的關(guān)系圖,J,5,Collection接口和AbstrctCollection接口,J,6,散列集 (HashSet類(lèi)),三個(gè): 散列集(HashSet類(lèi))、 鏈?zhǔn)缴⒘屑?(LinkedHashSet類(lèi))、 樹(shù)形集(TreeSet類(lèi))。 散列集(HashSet類(lèi)): 添加到散列集中的對(duì)象必須實(shí)現(xiàn)hashCode()方法。 實(shí)例: 創(chuàng)建一個(gè)散列集來(lái)存儲(chǔ)文本中解析出來(lái)的單詞,并使用迭代器遍歷該集合中的每一個(gè)單詞。 注意:1.將多個(gè)相同元素添加到規(guī)則集中,只有一個(gè)被存儲(chǔ)。
3、 2.集合中的元素沒(méi)有按插入時(shí)的順序存儲(chǔ)(集合的無(wú)序性)。 3.添加到集合中的元素必須和集合聲明的元素類(lèi)型相同。 4.for(Object element:set)語(yǔ)句,用于遍歷集合中的每個(gè)元素。,J,7,LinkedHashSet: 使用鏈表實(shí)現(xiàn),可以按照元素插入的順序進(jìn)行訪(fǎng)問(wèn)。 實(shí)例: 用文本文件中提取的字符串構(gòu)造鏈?zhǔn)缴⒘屑?,并用foreach語(yǔ)句對(duì)其中的元素進(jìn)行訪(fǎng)問(wèn)。 程序:ex16_2.java 提示:如果不需要使元素按照其插入的順序進(jìn)行存儲(chǔ),應(yīng)該使用HashSet,它的效率比LinkedHashSet高。 TreeSet: 可以對(duì)加入其中的元素進(jìn)行排序(升序或降序) 幾個(gè)方法: fi
4、rst()、last() 、headSet(toElement) 、tailSet(fromElement) 注意:加入樹(shù)形集中的元素必須是可比較的。,鏈?zhǔn)缴⒘屑?(LinkedHashSet)和樹(shù)形集(TreeSet),J,8,實(shí)現(xiàn)對(duì)象比較的方法: 方法1:實(shí)現(xiàn)Comparable接口。 實(shí)例:使用TreeSet類(lèi)按照字母順序顯示單詞。 程序:ex16_3.java 使用TreeSet(Collection c)可以提高效率,僅排序一次。 注意:更新集合,需保持順序時(shí),使用樹(shù)形集,否則使用散列集。 方法2:實(shí)現(xiàn)Comparator 接口。 可以將實(shí)現(xiàn)了Comparator 接口的不同類(lèi)型的元
5、素加入到樹(shù)形集中。 實(shí)現(xiàn)兩個(gè)方法: public int compare(Object element1,Object element2) public boolean equals(Object element) 實(shí)例:幾何圖形面積的比較。并將不同的幾何圖形加入到樹(shù)形集中。然后輸出加入的元素。 程序:ex16_4.java 注意:Comparable用于比較相同類(lèi)型的兩個(gè)對(duì)象,Comparator可比較不同類(lèi)型的兩個(gè)對(duì)象。,鏈?zhǔn)缴⒘屑?(LinkedHashSet)和樹(shù)形集(TreeSet),J,9,線(xiàn)性表,使用線(xiàn)性表: 1.允許在一個(gè)集合中存儲(chǔ)重復(fù)的元素。 2. 可以指定元素的存儲(chǔ)位置。
6、3.可以用下標(biāo)來(lái)訪(fǎng)問(wèn)元素。 4.但不支持有序存儲(chǔ)。,J,10,線(xiàn)性表,J,11,ArrayList和LinkedList的區(qū)別: 1.實(shí)現(xiàn)方式不同 數(shù)組線(xiàn)性表用數(shù)組實(shí)現(xiàn)的線(xiàn)性表,鏈?zhǔn)骄€(xiàn)性表是用鏈表結(jié)構(gòu)實(shí)現(xiàn)的線(xiàn)性表。 2.不同應(yīng)用場(chǎng)合效率不同 數(shù)組線(xiàn)性表可以用下標(biāo)隨機(jī)訪(fǎng)問(wèn)元素,但不適合在任意的位置頻繁插入和刪除元素。 ArrayList 創(chuàng)建動(dòng)態(tài)可變的數(shù)組。 trimToSize():用于調(diào)整數(shù)組大小到線(xiàn)性表實(shí)際的大小。 LinkedList 包含了從線(xiàn)性表兩端提取、插入和刪除元素的方法。 getFirst(), getLast() , addFirst(o:E) , addLast(o:E),
7、 removeFirst(), removeLast(),ArrayList和LinkedList,J,12,實(shí)例: 創(chuàng)建用數(shù)組填充的數(shù)組線(xiàn)性表,并將新元素插入到線(xiàn)性表指定的位置,且利用該數(shù)組線(xiàn)性表創(chuàng)建一個(gè)鏈表,并從該鏈表中插入和刪除元素。最后分別用向前和向后遍歷的方法遍歷該鏈表。 程序:ex16_5.java 列表的創(chuàng)建: 使用java.util.Arrays類(lèi)中的asList(T. a)方法。 如:List list=Arrays.asList(“red”,”green”,” blue”);,ArrayList和LinkedList,J,13,線(xiàn)性表不支持有序存儲(chǔ),但是: java.uti
8、l.Collections類(lèi)提供了: 1. 用于線(xiàn)性表排序的靜態(tài)方法。 2. 用于求集合的最大、最小元素等的方法。 例1: List list=Arrays.asList(2,3,4,7,11,45,50,59,60); Collections.binarySearch(list,11); Collections.binarySearch(list,5); 例2: Set set=new HashSet(); set.add(“red”); set.add(“blue”); Collections.max(set);,線(xiàn)性表(List)和集合(Collection)的靜態(tài)方法,J,14,Sta
9、ck類(lèi): peek() 返回棧頂元素 pop() 彈出棧頂元素 push(o:E) 在棧頂添加一個(gè)新元素 Queue接口:LinkedList offer(element:E) 向隊(duì)列中插入一個(gè)元素 poll() 返回并刪除隊(duì)列頭,隊(duì)列為空,則返回null remove() 返回并刪除隊(duì)列頭,隊(duì)列為空,拋出異常 peek() 返回但不刪除隊(duì)列頭,如果隊(duì)列為空,返回null. 實(shí)例:分別創(chuàng)建一個(gè)棧和一個(gè)隊(duì)列,插入和刪除元素并顯示。 程序:ex16_6.java,棧類(lèi)(Stack)、隊(duì)列(Queue),J,15,是Queue接口的實(shí)例。使用Comparable對(duì)元素排序,擁有最小數(shù)值的元素被賦予最
10、高的優(yōu)先級(jí),最先從隊(duì)列中移出。也可以使用實(shí)現(xiàn)了比較器接口的實(shí)例對(duì)元素進(jìn)行比較。 優(yōu)先隊(duì)列創(chuàng)建的構(gòu)造方法: PriorityQueue() PriorityQueue(initialCapacity:int) PriorityQueue(c:Collection) PriorityQueue(initialCapacity:int,comparator:Comparator) 實(shí)例:創(chuàng)建一個(gè)優(yōu)先隊(duì)列,并以正序和倒序的方式輸出。 程序:ex16_7.java,優(yōu)先隊(duì)列(PriorityQueue),J,16,圖(map),Map接口:Map 建立元素和鍵的映射關(guān)系。 鍵:可以是任意類(lèi)型的對(duì)象,一個(gè)圖中不能有重復(fù)的鍵,每個(gè)鍵對(duì)應(yīng)一個(gè)值。,J,17,實(shí)現(xiàn)Map接口的具體類(lèi),1.散列圖HashMap 元素是沒(méi)有順序的 2.鏈?zhǔn)缴⒘袌D LinkedHashMap 按元素插入的順序排序或最后訪(fǎng)問(wèn)的時(shí)間順序排序 3.樹(shù)形圖 TreeMap 按照鍵的順序排序 實(shí)例:創(chuàng)建一個(gè)散列圖,一個(gè)鏈?zhǔn)缴⒘袌D和一個(gè)樹(shù)形圖,建立學(xué)生與年齡之間的映射關(guān)系。按照遞增的順序顯示樹(shù)形圖中的映射。 程序:ex
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 富氧燃燒施工方案
- 室內(nèi)藝術(shù)漆施工方案
- 2025年地理試題及答案
- 6年級(jí)下冊(cè)語(yǔ)文園地5日積月累朗讀
- 5年級(jí)下冊(cè)書(shū)人教版英語(yǔ)書(shū)
- centos中多線(xiàn)程壓縮命令
- 的田字格書(shū)寫(xiě)格式
- arcgis開(kāi)始編輯的代碼
- 廣東減震支架施工方案
- 登山臺(tái)階開(kāi)挖施工方案
- 《認(rèn)知理論》課件
- 2024年度寧夏回族自治區(qū)國(guó)家電網(wǎng)招聘之環(huán)化材料類(lèi)題庫(kù)檢測(cè)試卷B卷附答案
- 2024年云南省中考物理真題含解析
- 《冠心病護(hù)理》課件
- 江蘇省蘇州市2023-2024學(xué)年八年級(jí)上學(xué)期期末語(yǔ)文試題及答案
- ECharts數(shù)據(jù)可視化課件 第3章 柱狀圖和散點(diǎn)圖
- 老年人護(hù)理安全風(fēng)險(xiǎn)管理
- 建筑施工企業(yè)成本控制管理制度
- 音樂(lè)課《詠鵝》教案7篇
- 中學(xué)校園廣播聽(tīng)力系統(tǒng)管理制度
- 《馬說(shuō)》說(shuō)課課件-2023-2024學(xué)年統(tǒng)編版語(yǔ)文八年級(jí)下冊(cè)
評(píng)論
0/150
提交評(píng)論