JAVA集合框架和泛型_第1頁
JAVA集合框架和泛型_第2頁
JAVA集合框架和泛型_第3頁
JAVA集合框架和泛型_第4頁
JAVA集合框架和泛型_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章集合框架和泛型第一單元第1頁/共37頁本門課程目標(biāo)學(xué)完本門課程后,你能夠:運(yùn)用Java常用API編寫程序通過Java程序來操作文件開發(fā)基于多線程的程序開發(fā)Java服務(wù)器/客戶端程序并實(shí)現(xiàn)通信定義并解析XML文件具有獨(dú)立分析問題和解決問題的能力,能夠勝任Java程序的開發(fā)第2頁/共37頁本章相關(guān)學(xué)習(xí)資源《集合框架及泛型》專題《使用Java高級(jí)實(shí)用技術(shù)》第1章《集合框架和泛型》第3頁/共37頁學(xué)習(xí)平臺(tái)“Java高級(jí)特性”課程學(xué)生用書預(yù)習(xí)檢查第4頁/共37頁至少說出Java集合框架中4個(gè)常用的接口或類。List接口和Map接口存儲(chǔ)數(shù)據(jù)的方式各自是什么?簡(jiǎn)述泛型的作用。提問本章任務(wù)任務(wù)1:實(shí)現(xiàn)新聞標(biāo)題查詢功能任務(wù)2:使用泛型改進(jìn)新聞標(biāo)題查詢功能第5頁/共37頁理解集合的概念及優(yōu)勢(shì)熟練使用各種集合類存儲(chǔ)數(shù)據(jù)使用Iterator接口遍歷集合泛型集合泛型接口、泛型類、泛型方法本章目標(biāo)第6頁/共37頁點(diǎn)難點(diǎn)重點(diǎn)重點(diǎn)重串講:Java集合框架Java集合框架位于java.util包中,提供了一套性能優(yōu)良、使用方便的接口和類Java集合框架共有三大類接口:List、Set、Map第7頁/共37頁實(shí)線框表示實(shí)現(xiàn)類虛線框表示接口List接口存儲(chǔ)一組不唯一,有序(插入順序)的對(duì)象ArrayList類實(shí)現(xiàn)了長(zhǎng)度可變的數(shù)組,在內(nèi)存中分配連續(xù)的空間。遍歷元素和隨機(jī)訪問元素的效率比較高LinkedList類采用鏈表存儲(chǔ)方式。插入、刪除元素時(shí)效率比較高集合框架3101串講:List接口第8頁/共37頁串講:ArrayList常用方法方法名說明booleanadd(Objectobj)將元素添加到集合中booleanadd(intindex,Objectobj)將元素obj插入到集合的index索引位置Objectget(intindex)返回集合中索引為index的元素intindexOf(Objectobj)返回元素在集合中出現(xiàn)的索引Objectset(intindex,Objectobj)將index索引位置的元素替換為obj元素Objectremove(intindex)刪除并返回index索引位置的元素booleanisEmpty

()判斷集合是否為空booleancontains(Objectobj)判斷集合中是否包含obj第9頁/共37頁get(1)返回集合的第幾個(gè)元素?提問上機(jī)練習(xí)第10頁/共37頁完成時(shí)間:15分鐘共性問題集中講解需求說明存儲(chǔ)多個(gè)員工信息(包括工號(hào)、姓名、年齡,入職時(shí)間),逐條打印所有員工姓名,并輸出員工的個(gè)數(shù)分析使用ArrayList存儲(chǔ)數(shù)據(jù)元素個(gè)數(shù)不確定要求獲得元素的實(shí)際個(gè)數(shù)按照存儲(chǔ)順序獲取并打印元素信息練習(xí)串講:LinkedList常用方法LinkedList同樣提供了已學(xué)習(xí)的ArrayList方法方法名說明voidaddFirst(Objecto)將給定元素插入當(dāng)前集合頭部voidaddLast(Objecto)將給定元素插入當(dāng)前集合尾部ObjectgetFirst()獲得當(dāng)前集合的第一個(gè)元素ObjectgetLast()獲得當(dāng)前集合的最后一個(gè)元素ObjectremoveFirst()移除并返回當(dāng)前集合的第一個(gè)元素ObjectremoveLast()移除并返回當(dāng)前集合的最后一個(gè)元素第11頁/共37頁上機(jī)練習(xí)第12頁/共37頁完成時(shí)間:10分鐘共性問題集中講解需求說明存儲(chǔ)多個(gè)員工信息(包括工號(hào)、姓名、年齡,入職時(shí)間),當(dāng)有新員工入職時(shí),添加其信息;當(dāng)有員工離職時(shí),刪除其信息分析插入、刪除操作頻繁時(shí),可使用LinkedList來提高效率LinkedList額外提供對(duì)頭部和尾部元素進(jìn)行添加和刪除操作的方法練習(xí)串講:ArrayList與LinkedList對(duì)比ArrayList遍歷元素和隨機(jī)訪問元素的效率比較高插入、刪除等操作頻繁時(shí)性能低下ArrayList和LinkedList分別在何時(shí)使用?LinkedList插入、刪除元素時(shí)效率較高查找效率較低第13頁/共37頁問題串講:Set接口Set接口Set接口存儲(chǔ)一組唯一,無序的對(duì)象HashSet是Set接口常用的實(shí)現(xiàn)類HashSet允許集合元素值為null操作數(shù)據(jù)的方法與List類似,Set接口不存在get()方法第14頁/共37頁HashSetnewsTitleSet=newHashSet();NewTitlecar=newNewTitle(1,"汽車","管理員");//增加元素newsTitleSet.add(car);//遍歷集合for(Objectobj:newsTitleList){NewTitletitle=(NewTitle)obj; System.out.println(title.getTitleName());}示例串講:IteratorIterator接口表示對(duì)集合進(jìn)行迭代的迭代器,專門實(shí)現(xiàn)集合的遍歷方法:hasNext():判斷是否存在另一個(gè)可訪問的元素next():返回要訪問的下一個(gè)元素System.out.println("使用Iterator遍歷,分別是:");Iteratorit=list.iterator();while(it.hasNext()){Stringname=(String)it.next();System.out.println(name);}返回類型是Object當(dāng)有元素時(shí)返回true第15頁/共37頁上機(jī)練習(xí)完成時(shí)間:10分鐘共性問題集中講解第16頁/共37頁需求說明使用Iterator遍歷員工集合,打印員工姓名以及性別分析使用HashSet存儲(chǔ)員工信息使用Iterator遍歷HashSet集合練習(xí)串講:HashMapHashMap是Map接口最常見的實(shí)現(xiàn)類HashMapmap=newHashMap();map.put("班長(zhǎng)","小張");//添加的數(shù)據(jù)轉(zhuǎn)換為Object類型map.put("學(xué)委","小李");map.put("體委","小王");Stringxiaozhang=(String)map.get("班長(zhǎng)");需要強(qiáng)制類型轉(zhuǎn)換第17頁/共37頁HashMap如何存儲(chǔ)數(shù)據(jù)?有什么優(yōu)勢(shì)?存儲(chǔ)一組成對(duì)的鍵-值對(duì)象,提供key(鍵)到value(值)的映射,通過key來索引key不允許重復(fù)value允許重復(fù)添加的對(duì)象將轉(zhuǎn)換為Object類型串講:HashMap的常用方法方法名說明Objectput(key,value)將相互關(guān)聯(lián)的一個(gè)關(guān)鍵字(key)與一個(gè)值(value)放入該集合。Objectremove(Objectkey)從當(dāng)前集合中移除與指定鍵相關(guān)的映射,并返回該鍵關(guān)聯(lián)的舊值。如果key沒有任何關(guān)聯(lián),則返回nullObjectget(Objectkey)獲得與關(guān)鍵字key相關(guān)的值。如果該鍵不關(guān)聯(lián)任何非null值,則返回nullbooleancontainsKey(key)判斷集合中是否存在關(guān)鍵字keybooleancontainsValue(value)判斷集合中是否存在值valuebooleanisEmpty()判斷集合中是否有存在元素voidclear()清除集合中所有元素int

size()返回集合中元素的數(shù)量SetkeySet()獲取所有鍵key的集合Collectionvalues()獲取所有值value的集合第18頁/共37頁上機(jī)練習(xí)需求說明輸入詩的名稱,查詢出詩的內(nèi)容,當(dāng)輸入“exit”時(shí)退出程序分析創(chuàng)建“詩”類Poem,屬性包括:名稱、作者、內(nèi)容使用HashMap存儲(chǔ)詩的信息,將詩名稱作為key,詩內(nèi)容作為value完成時(shí)間:15分鐘共性問題集中講解第19頁/共37頁練習(xí)串講:遍歷HashMapkeySet()方法獲取鍵的集合values()方法獲取值的集合使用HashMap存儲(chǔ)學(xué)生信息,學(xué)員英文名為鍵,學(xué)生對(duì)象為值遍歷鍵集和值集演示示例:遍歷HashMap第20頁/共37頁示例串講:Collections類Collections和Collection不同,前者是集合的操作類,后者是集合接口Collections提供的靜態(tài)方法sort():排序binarySearch():查找fill():替換第21頁/共37頁串講:Collections類操作集合如何讓打印出的結(jié)果是123?Collections類可以對(duì)集合進(jìn)行排序、查找和替換操作實(shí)現(xiàn)一個(gè)類的對(duì)象之間比較大小,該類要實(shí)現(xiàn)Comparable接口重寫compareTo()方法ArrayListlist=newArrayList();list.add(2);list.add(3);list.add(1);打印輸出集合元素的結(jié)果是?演示示例:使用Collections排序第22頁/共37頁分析問題上機(jī)練習(xí)需求說明使用Collections類對(duì)員工集合按年齡進(jìn)行排序并輸出排序后的信息分析員工類實(shí)現(xiàn)Comparable接口調(diào)用Collections類的sort()方法完成時(shí)間:10分鐘共性問題集中講解第23頁/共37頁練習(xí)小結(jié)如何判斷HashMap集合中是否存在某個(gè)關(guān)鍵字key?遍歷ArrayList集合的方式有幾種?第24頁/共37頁提問講解:泛型將對(duì)象的類型作為參數(shù),指定到其他類或者方法上,從而保證類型轉(zhuǎn)換的安全性和穩(wěn)定性本質(zhì)是參數(shù)化類型//創(chuàng)建學(xué)員集合ArrayList<Student>students=newArrayList<Student>();//創(chuàng)建學(xué)員類對(duì)象Studentstudent=newStudent();//創(chuàng)建詩類對(duì)象Poempoem=newPoem();//將兩個(gè)對(duì)象添加到list集合中students.add(student);students.add(poem);由于創(chuàng)建時(shí)已指定Student類型,所以這里會(huì)報(bào)錯(cuò)第25頁/共37頁示例串講:泛型集合泛型集合可以約束集合內(nèi)的元素類型典型泛型集合ArrayList<E>,HashMap<K,V><E>、<K,V>表示該泛型集合中的元素類型泛型集合中的數(shù)據(jù)不再轉(zhuǎn)換為Object第26頁/共37頁除了指定了集合中的元素類型外,泛型集合和之前學(xué)習(xí)的集合的用法完全一樣串講:ArrayList<E>和HashMap<K,V>ArrayList<E>第27頁/共37頁HashMap<K,V>//創(chuàng)建泛型集合ArrayList<NewTitle>newsTitleList=newArrayList<NewTitle>();//依次添加各類新聞標(biāo)題newsTitleList.add(car);newsTitleList.add(test);Map<String,Student>students=newHashMap<String,Student>();students.put("Jack",student1);students.put("Rose",student2);限定集合元素的類型為NewTitle限定鍵的類型為String,值的類型為Student示例示例上機(jī)練習(xí)需求說明使用泛型集合改進(jìn)查詢?cè)姷男畔⒌纳蠙C(jī)練習(xí),實(shí)現(xiàn)對(duì)詩的信息的存儲(chǔ)和查詢功能。第28頁/共37頁完成時(shí)間:10分鐘共性問題集中講解練習(xí)講解:泛型的其他應(yīng)用-泛型接口泛型接口就是擁有一個(gè)或多個(gè)類型參數(shù)的接口第29頁/共37頁publicinterface接口名<類型形參>{

方法名(類型形參類型形參實(shí)例);}publicinterfaceTestInterface<T>{publicTprint(Tx);}不具體指定數(shù)據(jù)類型,由使用此接口的用戶決定數(shù)據(jù)類型示例語法講解:泛型的其他應(yīng)用-泛型類泛型類就是具有一個(gè)或者多個(gè)類型參數(shù)的類第30頁/共37頁publicclass類名<類型形參>{

方法名(類型形參類型形參實(shí)例){

方法執(zhí)行體}}publicclassStudent<T>{publicTprint(Tx){//方法體}}不具體指定數(shù)據(jù)類型,由使用此接口的用戶決定數(shù)據(jù)類型語法示例講解:泛型的其他應(yīng)用-泛型方法泛型方法就是帶有類型參數(shù)的方法第31頁/共37頁修飾符<類型形參>返回值方法名(不指定|類型形參|正常參數(shù),……){

方法體}public<T>voidfromArrayToList(T[]t,List<T>list) //執(zhí)行方法}不指定具體的返回類型或者參數(shù),由使用此方法的用戶決定語法示例講解:泛型應(yīng)用需求說明定義泛型接口并添加獲取字段方法,將類型參數(shù)做為此方法返回類型定義泛型類實(shí)現(xiàn)上述泛型接口,添加一個(gè)字段并將類型參數(shù)作為字段的類型,在構(gòu)造函數(shù)中初始化此字段在main()方法中實(shí)例化泛型接口,調(diào)用獲取字段方法并打印演示示例:泛型應(yīng)用第32頁/共37頁講解:多參數(shù)泛型類HashMap<K,V>屬于多個(gè)參數(shù)的泛型類第33頁/共37頁兩個(gè)類型形參,用逗號(hào)隔開classGenericDemo<T,V>{

溫馨提示

  • 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)論