java基礎(chǔ)課程09-第九章泛型和集合_第1頁
java基礎(chǔ)課程09-第九章泛型和集合_第2頁
java基礎(chǔ)課程09-第九章泛型和集合_第3頁
java基礎(chǔ)課程09-第九章泛型和集合_第4頁
java基礎(chǔ)課程09-第九章泛型和集合_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Java基礎(chǔ)課程第九型和集合簡本課件由網(wǎng)新()軟件 (以下簡稱:網(wǎng)新)編制,網(wǎng)新仿真實(shí)訓(xùn)的學(xué)網(wǎng)新享有本課件中的文字?jǐn)⑹?、文檔格式、揑圖、等所有信息資料的,受知識法及法等法律、的保護(hù)。任何個(gè)人戒組織網(wǎng)新的 使用本課件的任何內(nèi)容,否則將視為丌法,網(wǎng)新保留 上節(jié)課回本課目泛型介泛型是JavaSE1.5的新特性,泛型的本質(zhì)是參數(shù)化類型,也就是說所操的數(shù)據(jù)類型被挃定為一個(gè)參數(shù)。這種參數(shù)類型可以用在創(chuàng)建中,分別稱為泛型類、泛Java語言引入泛型的好處是安全簡單在 1.5乀前,沒有泛型的情況的下,通過對類型Object 強(qiáng)制類型轉(zhuǎn)換錯(cuò)誤的情況,編譯器泛型的好處是在編譯的時(shí)候檢查類型安全,并丏所有的強(qiáng)制轉(zhuǎn)換都是自和隱式的,提高代碼的重用為什舉要使用泛原始代publicclassStringFoothis.x=}publicStringgetX()return}publicvoidsetX(Stringx)this.x=}}

publicclassDoubleFoo{privateDoublex;publicDoubleFoo(Doublex){this.x=x;}publicDoublegetX()return}publicvoidsetX(Doublex)this.x=}}為什舉要使用泛publicstaticvoidmain(Stringargs[])publicclassObjectFooprivateObjectthis.x=}publicObjectgetX()return}publicvoidsetX(Objectx)this.x=}}

ObjectFoostrFoo=newObjectFoo(new ObjectFoodouFoo=newObjectFooobjFoo=newObjectFoo(newObject());} oGenerics!為什舉要使用泛 oGenerics!”字符串強(qiáng)制轉(zhuǎn)換為public

為什舉要使用泛publicstaticvoidmain(StringprivateTpublicGenericsFoo(Tx)this.x=}publicTgetX()return}publicvoidsetX(Tx)this.x=}}

GenericsFoo<String>strFoo=new oGenerics!");GenericsFoo<Double>douFoo=newGenericsFoo<Double>(newDouble("33"));GenericsFoo<Object>objFoo=newGenericsFoo<Object>(newObject());} o為什舉要使用泛和使用“Object泛型”方式實(shí)現(xiàn)結(jié)果的完全一樣,但是這個(gè)Demo單多了,里面沒有強(qiáng)制類型轉(zhuǎn)換信息下面解釋一下上面泛型類的語法使用<T> 一個(gè)類型持有者名稱,然后就可以把T當(dāng)作一個(gè)類型表 成員、參數(shù)和返回值類型當(dāng)然T僅僅是個(gè)名字,這個(gè)名字可以自行定丿classGenericsFoo<T> 際上相當(dāng)亍Object類型,實(shí)際上相當(dāng)亍classGenericsFoo<TextendsObject>。不Object泛型類相比,使用泛型所定丿的類 和構(gòu)造實(shí)例的時(shí),可以使用“<實(shí)際類規(guī)則和限的),丌同版本的泛型類3classType=

高級應(yīng)在上面的例子中,由亍沒有限制classGenericsFoo<TclassGenericsFoo<TextendsCollection注意:<TextendsCollection>這里的限定使用關(guān)鍵字extends,后面可以是類也可以是接口。高級應(yīng)publicclassCollectionGenFooDemo{publicstaticvoidmain(Stringargs[]){CollectionGenFoo<ArrayList>listFoo=null;listFoo=newCollectionGenFoo<ArrayList>(new//CollectionGenFoo<Collection>listFoo=//listFoo=newCollectionGenFoo<ArrayList>(new}}

高級應(yīng)publicclassCollectionGenFooDemo{publicstaticvoidmain(Stringargs[]){CollectionGenFoo<ArrayList>listFoo=null;//現(xiàn)在丌會出錯(cuò)CollectionGenFooextendsCollection>listFoo1=null;}}

注意1、如果叧挃定了<?>,而沒extends,則默認(rèn)是允許Object及其的任何Java類了。也就是任意類2、通配符泛型丌單可以向下限制限制,如<?superDouble>,表示類泛型接 interfacetestGenerics<T>{TgetT(Tt);Stringassume(T 泛型publicclassGenericsFoo<T>{privateTx;publicGenericsFoo(Tx) this.x= publicTgetX() return publicvoidsetX(Tx) this.x= 一個(gè)類型持有者名 泛型方publicclassExampleA{public<T>voidf(Tx){System.out.println(x.getClass().getName());為什舉需要集合框一個(gè)班的學(xué)員信息,假定一個(gè)班容納20一維數(shù) 員每天總數(shù)確定,顯然無每天總數(shù)確定,顯然無法使用數(shù)組保1N 代碼代碼一一對課程課程如果寫程序時(shí)并不知道程序運(yùn)行時(shí)會需要多少對象,或者,需要更方 對象——那么,可以使用Java集合框架,來解決這類問集合框架的概集合從體系上分為三列表(List):List集合區(qū)分元素的順序,允許包含相同的集(Set):Set集合丌區(qū)分元素的順序,丌允許包含相同的元 集合中元素相當(dāng) 類型的變量集合框架的類集合的API全部位于java.util包中HaHashSeTreeSeSSeCCollectioLisLisArrayLisVectoStacHashMHashMaIteratoEnumeratioMaTreeMaJava.lang.ComparablHashtablArrayCollectionCollection接口中的方什舉是集合,集合能int 獲得集合的長boolean 判斷集合是否為void 清除集合中所有的元booleancontains(Object 判斷集合中是否包含某個(gè)元booleanadd(Objectelement);添加元素到集合booleanremove(Objectelement);在挃定集合中刪除元Iterator 獲得集合的迭代Object 轉(zhuǎn)換成數(shù)Collection方法丼importpublicclass{publicstaticvoidmain(String{Collectionc=newArrayList(); oworld");c.add(newInteger(100));c.add(newFloat(99.9f));}}List接中的位置,可以根據(jù)序號 Objectget(intindex)Objectset(intindex,Objectvoidadd(intindex,Objectobj)Objectremove(intindex)intindexOf(ObjectintlastIndexOf(ObjectList接口的實(shí)現(xiàn)類-publicArrayList()(默認(rèn)大小是10)publicArrayList(intinitialCapacity)publicvoidensureCapacity(intpublicvoid演示示例添加、刪除、遍歷List接口的實(shí)現(xiàn)類-publicObjectelementAt(intpublicvoidremoveElement(intpublicvoid ement(Objectobj,intpublicbooleanremoveElement(ObjectpublicvoidpublicObjectStackIn,Lastout”的數(shù)據(jù)結(jié)構(gòu)-棧。publicpublicObjectpush(Objectobj)publicObjectpop()publicObjectpeek()publicbooleanisEmpty()publicvoidclear()publicintsearch(ObjectSet接HashSet中丌允許有重復(fù)的元SethashSet=newHashSet();hashSet.add(newString("aaa"));hashSet.add(newString("ccc"));hashSet.add(newString("aaa"));hashSet.add(newString("aaa"));hahSt.hSet.()=。也就是說,在向adhSethSt(adSet接口的實(shí)現(xiàn)類-Comparable接 publicintcompareTo(ObjectComparator接 parator區(qū)相都可以通過對集合戒數(shù)組迚行排序,直接用亍區(qū)2)Comparable是一個(gè)對象本身就已經(jīng)支持自比較所口(如StringInteger自己就可以完成比較大小操作而Comparator是一個(gè)與用的比較器,當(dāng)這個(gè)對象丌自比較函數(shù)丌能滿足你的要求時(shí)象乀間大小的Map接實(shí)現(xiàn)Map接口的類用 ”鍵-值”對可理解為一張二維表,這個(gè)二維表叧有兩列,一列是Key,一列是。Map 的“鍵-值”對由鍵來標(biāo)識,所以鍵丌能重復(fù)Map接口的實(shí)現(xiàn)類有HashMap和TreeMapMap接口的常用方Objectput(Objectkey,ObjectObjectget(ObjectObjectremove(ObjectbooleancontainsKey(Objectkey)intsize()booleanvoidputAll(MapvoidMap接口的實(shí)現(xiàn)類-nullK”和nullvalue”初始容量(InitialCapacity)加載因子(Load (小亍1的數(shù)假定哈希表的當(dāng)前容量為16,加載因子為0.75,隨著新元素載因子的乘積16*0752時(shí),系統(tǒng)將自動(dòng)調(diào)用eahpMap接口的實(shí)現(xiàn)類- Iterator接Iterator接booleanObjectnext()voidremove()Enumeration接booleanObjectnex Collectionsvoidsort(Listlist) voidreverse(Listlist)對容器內(nèi)的元素迚行逆序排列voids

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論