Java應(yīng)用開(kāi)發(fā)與實(shí)踐-集合與泛型_第1頁(yè)
Java應(yīng)用開(kāi)發(fā)與實(shí)踐-集合與泛型_第2頁(yè)
Java應(yīng)用開(kāi)發(fā)與實(shí)踐-集合與泛型_第3頁(yè)
Java應(yīng)用開(kāi)發(fā)與實(shí)踐-集合與泛型_第4頁(yè)
Java應(yīng)用開(kāi)發(fā)與實(shí)踐-集合與泛型_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

集合與泛型Java應(yīng)用開(kāi)發(fā)與實(shí)踐

酒店管理系統(tǒng)的設(shè)計(jì)學(xué)習(xí)目標(biāo)了解集合框架的構(gòu)成了解Collection接口及常用子接口掌握List接口及實(shí)現(xiàn)類(lèi)的用法了解Set接口及實(shí)現(xiàn)類(lèi)的用法掌握Map接口及實(shí)現(xiàn)類(lèi)的用法了解泛型的意義理解在類(lèi)和接口中的應(yīng)用5.1集合框架5.2泛型5.3實(shí)訓(xùn)5集合實(shí)現(xiàn)類(lèi)的基礎(chǔ)練習(xí)目錄5.1集合框架在Java語(yǔ)言中的java.util包提供了一些集合類(lèi),這些集合類(lèi)又被稱(chēng)作容器,是一個(gè)包含多個(gè)元素的對(duì)象,集合可以對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),刪除,修改、查詢(xún)等操作。它不同與數(shù)組,數(shù)組有固定長(zhǎng)度,所以在定義數(shù)組的時(shí)候必須預(yù)先確定數(shù)組的大小,集合不必確定固定的大小,在存放對(duì)象是擁有更多的靈活性。集合框架是一個(gè)用來(lái)代表和操縱集合的統(tǒng)一架構(gòu)。接口:表示集合的抽象數(shù)據(jù)類(lèi)型。實(shí)現(xiàn)類(lèi):集合接口的具體實(shí)現(xiàn),是重用性很高的數(shù)據(jù)結(jié)構(gòu)。算法:用來(lái)根據(jù)需要對(duì)實(shí)體類(lèi)中的對(duì)象進(jìn)行計(jì)算,比如存儲(chǔ)、查找、排序等。同一種算法可以對(duì)不同的集合實(shí)現(xiàn)類(lèi)進(jìn)行計(jì)算,這是利用了“多態(tài)”。5.1集合框架Collection接口是集合接口樹(shù)的根,它是集合框架的頂級(jí)接口。Collection接口是List、Queue和Set接口的父接口。5.1.1Collection接口及常用子接口5.1集合框架接口List<E>是有序的collection(也稱(chēng)為序列)。此接口的用戶(hù)可以對(duì)列表中每個(gè)元素的插入位置進(jìn)行精確地控制。用戶(hù)可以根據(jù)元素的整數(shù)索引(在列表中的位置)訪(fǎng)問(wèn)元素,并搜索列表中的元素。使用List接口的實(shí)現(xiàn)類(lèi)時(shí),可以指定列表中每個(gè)元素的插入位置,用戶(hù)可以根據(jù)元素的索引值(即元素在列表中的位置)訪(fǎng)問(wèn)元素,并搜索列表中的元素。5.1.2List接口及實(shí)現(xiàn)類(lèi)方法聲明

方法功能voidadd(intindex,Objectelement)在列表的index位置添加元素Objectremove(intindex)刪除列表中index位置的元素Objectget(intindex)返回列表index位置的元素Objectset(intindex,Objectelement)用指定元素替換列表中指定位置的元素1.ArrayList類(lèi)ArrayList類(lèi)是List接口的大小可變數(shù)組的實(shí)現(xiàn),它實(shí)現(xiàn)了所有可選列表操作,并允許包括null在內(nèi)的所有元素。除了實(shí)現(xiàn)List接口外,此類(lèi)還提供一些方法來(lái)操作內(nèi)部用來(lái)存儲(chǔ)列表的數(shù)組的大小。ArrayList<Student>list=newArrayList<Student>();//創(chuàng)建ArrayList對(duì)象list.add(s1);//將s1加入ArrayList列表list.add(s2);list.add(1,s3);//將s3加入ArrayList列表中(列表第二個(gè))Studenttemp=(Student)list.get(0);5.1.2List接口及實(shí)現(xiàn)類(lèi)2.LinkedList類(lèi)LinkedList也實(shí)現(xiàn)了List接口,它是List接口的鏈接列表實(shí)現(xiàn),它實(shí)現(xiàn)所有可選的列表操作,并且允許所有元素(包括null)。除了實(shí)現(xiàn)List接口外,LinkedList類(lèi)還為在列表的開(kāi)頭及結(jié)尾get()、remove()和insert()元素提供了統(tǒng)一的命名方法。這些操作允許將鏈接列表用作堆棧、隊(duì)列或雙端隊(duì)列。LinkedList<Student>list=newLinkedList<Student>();//創(chuàng)建LinkedList對(duì)象list.addFirst(s1);//將s1加入LinkedList列表最前面(列表第一個(gè))list.addFirst(s2);list.add(1,s3);//將s3加入LinkedList列表中(列表第二個(gè))Studenttemp=(Student)list.get(i);list.remove(0);//刪除列表第一個(gè)對(duì)象(標(biāo)號(hào)為0)5.1.2List接口及實(shí)現(xiàn)類(lèi)3.Vector類(lèi)Vector類(lèi)可以實(shí)現(xiàn)可增長(zhǎng)的對(duì)象數(shù)組。與數(shù)組一樣,它包含可以使用整數(shù)索引進(jìn)行訪(fǎng)問(wèn)的組件。但是,Vector的大小可以根據(jù)需要增大或縮小,以適應(yīng)創(chuàng)建Vector后進(jìn)行添加或移除項(xiàng)的操作。Vectorvector=newVector();//創(chuàng)建一個(gè)Vector對(duì)象vector.add(s1);//將s1加入Vector列表最前面(列表第一個(gè))vector.add(s2);vector.add(1,s3);//將s3加入Vector列表中(列表第二個(gè))Studenttemp=(Student)vector.get(i);vector.remove(0);5.1.2List接口及實(shí)現(xiàn)類(lèi)4.Stack類(lèi)Stack類(lèi)表示后進(jìn)先出(LIFO)的對(duì)象堆棧。它通過(guò)五個(gè)操作對(duì)類(lèi)Vector進(jìn)行了擴(kuò)展,允許將向量視為堆棧。它提供了通常的push()和pop()操作,以及取堆棧頂點(diǎn)的peek()方法、測(cè)試堆棧是否為空的empty()方法、在堆棧中查找項(xiàng)并確定到堆棧頂距離的search()方法。Stackstack=newStack();//創(chuàng)建一個(gè)Stack對(duì)象stackstack.push(s1);//s1進(jìn)棧(棧底)printStack(stack);//顯示棧中的所有元素stack.push(s2);//s2進(jìn)棧printStack(stack);stack.pop();//出棧5.1.2List接口及實(shí)現(xiàn)類(lèi)5.1集合框架Set接口是一個(gè)不包含重復(fù)元素的collection。更確切地講,set不包含滿(mǎn)足e1.equals(e2)的元素對(duì)e1和e2,并且最多包含一個(gè)null元素。Set接口要求集合元素是唯一的(但元素可以為null),不能保證迭代順序恒久不變,它是無(wú)序的。比較常用的實(shí)現(xiàn)類(lèi)是HashSet類(lèi)。5.1.3Set接口及實(shí)現(xiàn)類(lèi)5.1集合框架 Set<String>set=newHashSet<String>();System.out.println(set.add("hello"));//trueSystem.out.println(set.add("hello"));//falseSystem.out.println(set.remove("hello"));//trueSystem.out.println(set.remove("hello"));//falseSystem.out.println(set.add(null));//trueSystem.out.println(set.remove(null));//trueSystem.out.println(set.remove(null));//false5.1.3Set接口及實(shí)現(xiàn)類(lèi)5.1集合框架 Set<String>set=newHashSet<String>(); set.add("hello1");set.add("hello2");set.add("hello3");set.add("hello4");set.add("hello5");set.add("hello6");Iterator<String>iterator=set.iterator();//迭代器iterwhile(iterator.hasNext()){//輸出set里的所有元素

Stringstr=(String)iterator.next();System.out.println(str);} }5.1.3Set接口及實(shí)現(xiàn)類(lèi)5.1集合框架Map接口儲(chǔ)存一組成對(duì)的鍵-值對(duì)象,提供key(鍵)到value(值)的映射。一個(gè)映射不能包含重復(fù)的鍵;每個(gè)鍵最多只能映射到一個(gè)值。映射順序定義為迭代器在映射的collection視圖上返回其元素的順序。某些映射實(shí)現(xiàn)可明確保證其順序,如TreeMap類(lèi);另一些映射實(shí)現(xiàn)則不保證順序,如最常見(jiàn)的HashMap類(lèi),它的儲(chǔ)存方式是哈希表,優(yōu)點(diǎn)是查詢(xún)指定元素效率高。5.1.4Map接口及實(shí)現(xiàn)類(lèi)5.1集合框架5.1.4Map接口及實(shí)現(xiàn)類(lèi)5.1集合框架HashMaphm=newHashMap();//創(chuàng)建一個(gè)HashMap對(duì)象hm.put("001",s1);//將s1加入hm中hm.put("002",s2);//put(Object,Object):一個(gè)是key一個(gè)是value,鍵值對(duì)hm.put("003",s3);//將對(duì)象s2替換掉(因?yàn)閗ey是唯一的)

//查找學(xué)號(hào)為002的學(xué)生,containsKey返回boolean值if(hm.containsKey("002")) { System.out.println("有此學(xué)生"); Students=(Student)hm.get("002");//取出學(xué)號(hào)為002的學(xué)生對(duì)象}5.1.4Map接口及實(shí)現(xiàn)類(lèi)5.1集合框架ArrayList:元素單個(gè),效率高,多用于查詢(xún)。LinkedList:元素單個(gè),多用于插入和刪除。Vector:元素單個(gè),線(xiàn)程安全,多用于查詢(xún)。Stack:元素單個(gè),先進(jìn)后出。它通過(guò)5個(gè)操作對(duì)Vector類(lèi)進(jìn)行擴(kuò)展,允許將向量視為堆棧。HashMap:元素成對(duì),元素可為空。HashTable:元素成對(duì),線(xiàn)程安全,元素不可為空。5.1.5各種集合的特點(diǎn)5.2泛型泛型是程序設(shè)計(jì)語(yǔ)言的一種特性,允許程序員在強(qiáng)類(lèi)型程序設(shè)計(jì)語(yǔ)言中編寫(xiě)代碼時(shí)定義一些可變部分。Java中泛型的引入主要是為了提高Java程序的類(lèi)型安全,避免了集合類(lèi)型元素在運(yùn)行期出現(xiàn)類(lèi)型轉(zhuǎn)換異常,增加了編譯時(shí)類(lèi)型的檢查。

Students1=newStudent("001","張三"); ArrayList<Student>list=newArrayList<Student>(); list.add(s1); Studenttemp=list.get(0);//取出get數(shù)據(jù)的時(shí)候不需要時(shí)候類(lèi)型轉(zhuǎn)換

System.out.println(temp);5.2.1泛型的意義5.2泛型Java中的泛型主要使用在類(lèi)、方法與接口中。通常是在定義類(lèi)時(shí),在類(lèi)的名稱(chēng)后,用尖括號(hào)括起來(lái),用大寫(xiě)字母(T、E、K、V等)表示一種未知類(lèi)型。雖然是未知類(lèi)型,但可以把它作為已知類(lèi)型使用,直到產(chǎn)生這個(gè)類(lèi)的對(duì)象時(shí),指是是哪種類(lèi)型。泛型使用在類(lèi)上的用法,其語(yǔ)法如下:classQuestion<T>

{

To;//某個(gè)類(lèi)型的變量作為其成員變量o publicQuestion(Tt)//構(gòu)造方法 { o=t; }}5.2.2泛型在類(lèi)中的應(yīng)用5.2泛型Java中的泛型也廣泛使用在接口中,泛型接口與泛型類(lèi)的定義及使用基本相同。泛型接口通常被用在各種類(lèi)的生產(chǎn)器中。其語(yǔ)法如下:interface接口名稱(chēng)<接口標(biāo)示>{}interfaceinterfo<T>{publicTgetInterfo();}5.2.2泛型在接口中的應(yīng)用5.3

溫馨提示

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

評(píng)論

0/150

提交評(píng)論