Java集合架構(gòu)幻燈片_第1頁
Java集合架構(gòu)幻燈片_第2頁
Java集合架構(gòu)幻燈片_第3頁
Java集合架構(gòu)幻燈片_第4頁
Java集合架構(gòu)幻燈片_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、J,1,Chapter14 Java集合架構(gòu),Collection接口和AbstractCollection類 規(guī)則集Set 比較器接口Comparator 線性表List Map,J,2,簡介,幾種常見的數(shù)據(jù)結(jié)構(gòu): 鏈表、堆棧、隊列、堆、優(yōu)先隊列等。 集合(collection):存儲一組對象的容器對象。 Java集合架構(gòu)支持三種類型的集合: 規(guī)則集(set)、線性表(list)、圖(map) Set:存儲一組互不相同的元素。 List:存儲一組順序排列的元素。 Map:存儲一組均有一個關(guān)聯(lián)鍵的對象。 注意:java集合架構(gòu)中的類都實現(xiàn)了Cloneable和Serializable接口。 本

2、章所學(xué)的類位于:java.util包中。 重點:如何使用集合架構(gòu)中的接口和類。,J,3,主要接口和類的關(guān)系圖,J,4,主要接口和類的關(guān)系圖,J,5,Collection接口和AbstrctCollection接口,J,6,散列集 (HashSet類),三個: 散列集(HashSet類)、 鏈?zhǔn)缴⒘屑?(LinkedHashSet類)、 樹形集(TreeSet類)。 散列集(HashSet類): 添加到散列集中的對象必須實現(xiàn)hashCode()方法。 實例: 創(chuàng)建一個散列集來存儲文本中解析出來的單詞,并使用迭代器遍歷該集合中的每一個單詞。 注意:1.將多個相同元素添加到規(guī)則集中,只有一個被存儲。

3、 2.集合中的元素沒有按插入時的順序存儲(集合的無序性)。 3.添加到集合中的元素必須和集合聲明的元素類型相同。 4.for(Object element:set)語句,用于遍歷集合中的每個元素。,J,7,LinkedHashSet: 使用鏈表實現(xiàn),可以按照元素插入的順序進(jìn)行訪問。 實例: 用文本文件中提取的字符串構(gòu)造鏈?zhǔn)缴⒘屑?,并用foreach語句對其中的元素進(jìn)行訪問。 程序:ex16_2.java 提示:如果不需要使元素按照其插入的順序進(jìn)行存儲,應(yīng)該使用HashSet,它的效率比LinkedHashSet高。 TreeSet: 可以對加入其中的元素進(jìn)行排序(升序或降序) 幾個方法: fi

4、rst()、last() 、headSet(toElement) 、tailSet(fromElement) 注意:加入樹形集中的元素必須是可比較的。,鏈?zhǔn)缴⒘屑?(LinkedHashSet)和樹形集(TreeSet),J,8,實現(xiàn)對象比較的方法: 方法1:實現(xiàn)Comparable接口。 實例:使用TreeSet類按照字母順序顯示單詞。 程序:ex16_3.java 使用TreeSet(Collection c)可以提高效率,僅排序一次。 注意:更新集合,需保持順序時,使用樹形集,否則使用散列集。 方法2:實現(xiàn)Comparator 接口。 可以將實現(xiàn)了Comparator 接口的不同類型的元

5、素加入到樹形集中。 實現(xiàn)兩個方法: public int compare(Object element1,Object element2) public boolean equals(Object element) 實例:幾何圖形面積的比較。并將不同的幾何圖形加入到樹形集中。然后輸出加入的元素。 程序:ex16_4.java 注意:Comparable用于比較相同類型的兩個對象,Comparator可比較不同類型的兩個對象。,鏈?zhǔn)缴⒘屑?(LinkedHashSet)和樹形集(TreeSet),J,9,線性表,使用線性表: 1.允許在一個集合中存儲重復(fù)的元素。 2. 可以指定元素的存儲位置。

6、3.可以用下標(biāo)來訪問元素。 4.但不支持有序存儲。,J,10,線性表,J,11,ArrayList和LinkedList的區(qū)別: 1.實現(xiàn)方式不同 數(shù)組線性表用數(shù)組實現(xiàn)的線性表,鏈?zhǔn)骄€性表是用鏈表結(jié)構(gòu)實現(xiàn)的線性表。 2.不同應(yīng)用場合效率不同 數(shù)組線性表可以用下標(biāo)隨機(jī)訪問元素,但不適合在任意的位置頻繁插入和刪除元素。 ArrayList 創(chuàng)建動態(tài)可變的數(shù)組。 trimToSize():用于調(diào)整數(shù)組大小到線性表實際的大小。 LinkedList 包含了從線性表兩端提取、插入和刪除元素的方法。 getFirst(), getLast() , addFirst(o:E) , addLast(o:E),

7、 removeFirst(), removeLast(),ArrayList和LinkedList,J,12,實例: 創(chuàng)建用數(shù)組填充的數(shù)組線性表,并將新元素插入到線性表指定的位置,且利用該數(shù)組線性表創(chuàng)建一個鏈表,并從該鏈表中插入和刪除元素。最后分別用向前和向后遍歷的方法遍歷該鏈表。 程序:ex16_5.java 列表的創(chuàng)建: 使用java.util.Arrays類中的asList(T. a)方法。 如:List list=Arrays.asList(“red”,”green”,” blue”);,ArrayList和LinkedList,J,13,線性表不支持有序存儲,但是: java.uti

8、l.Collections類提供了: 1. 用于線性表排序的靜態(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);,線性表(List)和集合(Collection)的靜態(tài)方法,J,14,Sta

9、ck類: peek() 返回棧頂元素 pop() 彈出棧頂元素 push(o:E) 在棧頂添加一個新元素 Queue接口:LinkedList offer(element:E) 向隊列中插入一個元素 poll() 返回并刪除隊列頭,隊列為空,則返回null remove() 返回并刪除隊列頭,隊列為空,拋出異常 peek() 返回但不刪除隊列頭,如果隊列為空,返回null. 實例:分別創(chuàng)建一個棧和一個隊列,插入和刪除元素并顯示。 程序:ex16_6.java,棧類(Stack)、隊列(Queue),J,15,是Queue接口的實例。使用Comparable對元素排序,擁有最小數(shù)值的元素被賦予最

10、高的優(yōu)先級,最先從隊列中移出。也可以使用實現(xiàn)了比較器接口的實例對元素進(jìn)行比較。 優(yōu)先隊列創(chuàng)建的構(gòu)造方法: PriorityQueue() PriorityQueue(initialCapacity:int) PriorityQueue(c:Collection) PriorityQueue(initialCapacity:int,comparator:Comparator) 實例:創(chuàng)建一個優(yōu)先隊列,并以正序和倒序的方式輸出。 程序:ex16_7.java,優(yōu)先隊列(PriorityQueue),J,16,圖(map),Map接口:Map 建立元素和鍵的映射關(guān)系。 鍵:可以是任意類型的對象,一個圖中不能有重復(fù)的鍵,每個鍵對應(yīng)一個值。,J,17,實現(xiàn)Map接口的具體類,1.散列圖HashMap 元素是沒有順序的 2.鏈?zhǔn)缴⒘袌D LinkedHashMap 按元素插入的順序排序或最后訪問的時間順序排序 3.樹形圖 TreeMap 按照鍵的順序排序 實例:創(chuàng)建一個散列圖,一個鏈?zhǔn)缴⒘袌D和一個樹形圖,建立學(xué)生與年齡之間的映射關(guān)系。按照遞增的順序顯示樹形圖中的映射。 程序:ex

溫馨提示

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

評論

0/150

提交評論