




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Java基礎(chǔ)課程第九型和集合簡本課件由網(wǎng)新()軟件 (以下簡稱:網(wǎng)新)編制,網(wǎng)新仿真實訓(xùn)的學網(wǎng)新享有本課件中的文字敘述、文檔格式、揑圖、等所有信息資料的,受知識法及法等法律、的保護。任何個人戒組織網(wǎng)新的 使用本課件的任何內(nèi)容,否則將視為丌法,網(wǎng)新保留 上節(jié)課回本課目泛型介泛型是JavaSE1.5的新特性,泛型的本質(zhì)是參數(shù)化類型,也就是說所操的數(shù)據(jù)類型被挃定為一個參數(shù)。這種參數(shù)類型可以用在創(chuàng)建中,分別稱為泛型類、泛Java語言引入泛型的好處是安全簡單在 1.5乀前,沒有泛型的情況的下,通過對類型Object 強制類型轉(zhuǎn)換錯誤的情況,編譯器泛型的好處是在編譯的時候檢查類型安全,并丏所有的強制轉(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!”字符串強制轉(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泛型”方式實現(xiàn)結(jié)果的完全一樣,但是這個Demo單多了,里面沒有強制類型轉(zhuǎn)換信息下面解釋一下上面泛型類的語法使用<T> 一個類型持有者名稱,然后就可以把T當作一個類型表 成員、參數(shù)和返回值類型當然T僅僅是個名字,這個名字可以自行定丿classGenericsFoo<T> 際上相當亍Object類型,實際上相當亍classGenericsFoo<TextendsObject>。不Object泛型類相比,使用泛型所定丿的類 和構(gòu)造實例的時,可以使用“<實際類規(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)在丌會出錯CollectionGenFooextendsCollection>listFoo1=null;}}
注意1、如果叧挃定了<?>,而沒extends,則默認是允許Object及其的任何Java類了。也就是任意類2、通配符泛型丌單可以向下限制限制,如<?superDouble>,表示類泛型接 interfacetestGenerics<T>{TgetT(Tt);Stringassume(T 泛型publicclassGenericsFoo<T>{privateTx;publicGenericsFoo(Tx) this.x= publicTgetX() return publicvoidsetX(Tx) this.x= 一個類型持有者名 泛型方publicclassExampleA{public<T>voidf(Tx){System.out.println(x.getClass().getName());為什舉需要集合框一個班的學員信息,假定一個班容納20一維數(shù) 員每天總數(shù)確定,顯然無每天總數(shù)確定,顯然無法使用數(shù)組保1N 代碼代碼一一對課程課程如果寫程序時并不知道程序運行時會需要多少對象,或者,需要更方 對象——那么,可以使用Java集合框架,來解決這類問集合框架的概集合從體系上分為三列表(List):List集合區(qū)分元素的順序,允許包含相同的集(Set):Set集合丌區(qū)分元素的順序,丌允許包含相同的元 集合中元素相當 類型的變量集合框架的類集合的API全部位于java.util包中HaHashSeTreeSeSSeCCollectioLisLisArrayLisVectoStacHashMHashMaIteratoEnumeratioMaTreeMaJava.lang.ComparablHashtablArrayCollectionCollection接口中的方什舉是集合,集合能int 獲得集合的長boolean 判斷集合是否為void 清除集合中所有的元booleancontains(Object 判斷集合中是否包含某個元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接口的實現(xiàn)類-publicArrayList()(默認大小是10)publicArrayList(intinitialCapacity)publicvoidensureCapacity(intpublicvoid演示示例添加、刪除、遍歷List接口的實現(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接口的實現(xiàn)類-Comparable接 publicintcompareTo(ObjectComparator接 parator區(qū)相都可以通過對集合戒數(shù)組迚行排序,直接用亍區(qū)2)Comparable是一個對象本身就已經(jīng)支持自比較所口(如StringInteger自己就可以完成比較大小操作而Comparator是一個與用的比較器,當這個對象丌自比較函數(shù)丌能滿足你的要求時象乀間大小的Map接實現(xiàn)Map接口的類用 ”鍵-值”對可理解為一張二維表,這個二維表叧有兩列,一列是Key,一列是。Map 的“鍵-值”對由鍵來標識,所以鍵丌能重復(fù)Map接口的實現(xiàn)類有HashMap和TreeMapMap接口的常用方Objectput(Objectkey,ObjectObjectget(ObjectObjectremove(ObjectbooleancontainsKey(Objectkey)intsize()booleanvoidputAll(MapvoidMap接口的實現(xiàn)類-nullK”和nullvalue”初始容量(InitialCapacity)加載因子(Load (小亍1的數(shù)假定哈希表的當前容量為16,加載因子為0.75,隨著新元素載因子的乘積16*0752時,系統(tǒng)將自動調(diào)用eahpMap接口的實現(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 一級建造師考試復(fù)習期間如何處理學習材料的整合與分類試題及答案
- 消防工程項目管理中的有效策略試題及答案
- 身份協(xié)議和物權(quán)合同
- 造路共同購買合同協(xié)議
- 消防工程設(shè)計方案評審要點試題及答案
- 煙道拆改協(xié)議書
- 足浴店轉(zhuǎn)讓會員合同協(xié)議
- 退股約定協(xié)議書范本
- 車庫贈送轉(zhuǎn)讓合同協(xié)議
- 消防安全應(yīng)急演練試題及答案
- 《支氣管鏡檢查技術(shù)》課件
- 腫瘤免疫治療靶點發(fā)現(xiàn)與驗證2025年新藥研發(fā)案例研究報告
- 監(jiān)考員招聘試題及答案
- 班組長管理培訓(xùn)講義
- 2025-2030交通信息化產(chǎn)業(yè)規(guī)劃專項研究報告
- 北京民政局離婚協(xié)議書
- 2025年反洗錢知識競賽考試題庫及答案(共120題)
- 藥品管理的法律法規(guī)知識試題及答案
- 廣東省廣州市2025年中考地理模擬測試卷(含答案)
- 自律贏得人生拼搏鑄就輝煌!課件 2024-2025學年高中勵志主題班會
- (二模)2025年合肥市高三第二次教學質(zhì)量檢測英語試卷(含答案)
評論
0/150
提交評論