Java集合架構(gòu)課件_第1頁
Java集合架構(gòu)課件_第2頁
Java集合架構(gòu)課件_第3頁
Java集合架構(gòu)課件_第4頁
Java集合架構(gòu)課件_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Java集合架構(gòu)Java高級(jí)程序設(shè)計(jì)(上)2簡(jiǎn)介幾種常見的數(shù)據(jù)結(jié)構(gòu):鏈表、堆棧、隊(duì)列、堆、優(yōu)先隊(duì)列等。集合(collection):存儲(chǔ)一組對(duì)象的容器對(duì)象。Java集合架構(gòu)支持三種類型的集合:規(guī)則集(set)、線性表(list)、圖(map)Set:存儲(chǔ)一組互不相同的元素。List:存儲(chǔ)一組順序排列的元素。Map:存儲(chǔ)一組均有一個(gè)關(guān)聯(lián)鍵的對(duì)象。注意:java集合架構(gòu)中的類都實(shí)現(xiàn)了Cloneable和Serializable接口。本章所學(xué)的類位于:java.util包中。重點(diǎn):如何使用集合架構(gòu)中的接口和類。Java高級(jí)程序設(shè)計(jì)(上)3主要接口和類的關(guān)系圖Java高級(jí)程序設(shè)計(jì)(上)4主要接口和類的關(guān)系圖Java高級(jí)程序設(shè)計(jì)(上)5Collection接口和AbstrctCollection接口Java高級(jí)程序設(shè)計(jì)(上)6散列集(HashSet類)

三個(gè):散列集(HashSet類)、鏈?zhǔn)缴⒘屑?LinkedHashSet類)、樹形集(TreeSet類)。散列集(HashSet類):

添加到散列集中的對(duì)象必須實(shí)現(xiàn)hashCode()方法。實(shí)例:創(chuàng)建一個(gè)散列集來存儲(chǔ)文本中解析出來的單詞,并使用迭代器遍歷該集合中的每一個(gè)單詞。注意:1.將多個(gè)相同元素添加到規(guī)則集中,只有一個(gè)被存儲(chǔ)。

2.集合中的元素沒有按插入時(shí)的順序存儲(chǔ)(集合的無序性)。

3.添加到集合中的元素必須和集合聲明的元素類型相同。

4.for(Objectelement:set)語句,用于遍歷集合中的每個(gè)元素。Java高級(jí)程序設(shè)計(jì)(上)7LinkedHashSet:

使用鏈表實(shí)現(xiàn),可以按照元素插入的順序進(jìn)行訪問。實(shí)例:用文本文件中提取的字符串構(gòu)造鏈?zhǔn)缴⒘屑⒂胒oreach語句對(duì)其中的元素進(jìn)行訪問。程序:ex16_2.java提示:如果不需要使元素按照其插入的順序進(jìn)行存儲(chǔ),應(yīng)該使用HashSet,它的效率比LinkedHashSet高。TreeSet:

可以對(duì)加入其中的元素進(jìn)行排序(升序或降序)

幾個(gè)方法:

first()、last()、headSet(toElement)、tailSet(fromElement)注意:加入樹形集中的元素必須是可比較的。鏈?zhǔn)缴⒘屑?LinkedHashSet)和樹形集(TreeSet)Java高級(jí)程序設(shè)計(jì)(上)8實(shí)現(xiàn)對(duì)象比較的方法:方法1:實(shí)現(xiàn)Comparable接口。實(shí)例:使用TreeSet類按照字母順序顯示單詞。程序:ex16_3.java

使用TreeSet(Collectionc)可以提高效率,僅排序一次。

注意:更新集合,需保持順序時(shí),使用樹形集,否則使用散列集。方法2:實(shí)現(xiàn)Comparator接口。

可以將實(shí)現(xiàn)了Comparator接口的不同類型的元素加入到樹形集中。

實(shí)現(xiàn)兩個(gè)方法:

publicintcompare(Objectelement1,Objectelement2)publicbooleanequals(Objectelement)實(shí)例:幾何圖形面積的比較。并將不同的幾何圖形加入到樹形集中。然后輸出加入的元素。程序:ex16_4.java注意:Comparable用于比較相同類型的兩個(gè)對(duì)象,Comparator可比較不同類型的兩個(gè)對(duì)象。鏈?zhǔn)缴⒘屑?LinkedHashSet)和樹形集(TreeSet)Java高級(jí)程序設(shè)計(jì)(上)9線性表使用線性表:

1.允許在一個(gè)集合中存儲(chǔ)重復(fù)的元素。

2.可以指定元素的存儲(chǔ)位置。

3.可以用下標(biāo)來訪問元素。4.但不支持有序存儲(chǔ)。Java高級(jí)程序設(shè)計(jì)(上)10線性表Java高級(jí)程序設(shè)計(jì)(上)11ArrayList和LinkedList的區(qū)別:

1.實(shí)現(xiàn)方式不同數(shù)組線性表用數(shù)組實(shí)現(xiàn)的線性表,鏈?zhǔn)骄€性表是用鏈表結(jié)構(gòu)實(shí)現(xiàn)的線性表。

2.不同應(yīng)用場(chǎng)合效率不同數(shù)組線性表可以用下標(biāo)隨機(jī)訪問元素,但不適合在任意的位置頻繁插入和刪除元素。ArrayList

創(chuàng)建動(dòng)態(tài)可變的數(shù)組。

trimToSize():用于調(diào)整數(shù)組大小到線性表實(shí)際的大小。LinkedList

包含了從線性表兩端提取、插入和刪除元素的方法。

getFirst(),getLast(),addFirst(o:E),addLast(o:E),removeFirst(),removeLast()ArrayList和LinkedListJava高級(jí)程序設(shè)計(jì)(上)12

實(shí)例:創(chuàng)建用數(shù)組填充的數(shù)組線性表,并將新元素插入到線性表指定的位置,且利用該數(shù)組線性表創(chuàng)建一個(gè)鏈表,并從該鏈表中插入和刪除元素。最后分別用向前和向后遍歷的方法遍歷該鏈表。程序:ex16_5.java列表的創(chuàng)建:使用java.util.Arrays類中的asList(T...

a)方法。如:List<String>list=Arrays.asList(“red”,”green”,”blue”);ArrayList和LinkedListJava高級(jí)程序設(shè)計(jì)(上)13線性表不支持有序存儲(chǔ),但是:

java.util.Collections類提供了:1.用于線性表排序的靜態(tài)方法。

2.

用于求集合的最大、最小元素等的方法。例1:List<Integer>list=Arrays.asList(2,3,4,7,11,45,50,59,60);Collections.binarySearch(list,11);Collections.binarySearch(list,5);例2:

Set<String>set=newHashSet();set.add(“red”);set.add(“blue”);

Collections.max(set);線性表(List)和集合(Collection)的靜態(tài)方法Java高級(jí)程序設(shè)計(jì)(上)14Stack類:

peek()返回棧頂元素

pop()彈出棧頂元素

push(o:E)在棧頂添加一個(gè)新元素Queue接口:LinkedList

offer(element:E)向隊(duì)列中插入一個(gè)元素

poll()返回并刪除隊(duì)列頭,隊(duì)列為空,則返回nullremove()返回并刪除隊(duì)列頭,隊(duì)列為空,拋出異常

peek()返回但不刪除隊(duì)列頭,如果隊(duì)列為空,返回null.實(shí)例:分別創(chuàng)建一個(gè)棧和一個(gè)隊(duì)列,插入和刪除元素并顯示。程序:ex16_6.java

棧類(Stack)、隊(duì)列(Queue)Java高級(jí)程序設(shè)計(jì)(上)15

是Queue接口的實(shí)例。使用Comparable對(duì)元素排序,擁有最小數(shù)值的元素被賦予最高的優(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<?extendsE>)PriorityQueue(initialCapacity:int,comparator:Comparator<?SuperE>)實(shí)例:創(chuàng)建一個(gè)優(yōu)先隊(duì)列,并以正序和倒序的方式輸出。程序:ex16_7.java優(yōu)先隊(duì)列(PriorityQueue)Java高級(jí)程序設(shè)計(jì)(上)16圖(map)Map接口:Map<K,V>

建立元素和鍵的映射關(guān)系。鍵:可以是任意類型的對(duì)象,一個(gè)圖中不能有重復(fù)的鍵,每個(gè)鍵對(duì)應(yīng)一個(gè)值。Java高級(jí)程序設(shè)計(jì)(上)17實(shí)現(xiàn)Map接口的具體類

1.散列圖HashMap

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論