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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

集合與泛型Java應用開發(fā)與實踐

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

方法功能voidadd(intindex,Objectelement)在列表的index位置添加元素Objectremove(intindex)刪除列表中index位置的元素Objectget(intindex)返回列表index位置的元素Objectset(intindex,Objectelement)用指定元素替換列表中指定位置的元素1.ArrayList類ArrayList類是List接口的大小可變數組的實現,它實現了所有可選列表操作,并允許包括null在內的所有元素。除了實現List接口外,此類還提供一些方法來操作內部用來存儲列表的數組的大小。ArrayList<Student>list=newArrayList<Student>();//創(chuàng)建ArrayList對象list.add(s1);//將s1加入ArrayList列表list.add(s2);list.add(1,s3);//將s3加入ArrayList列表中(列表第二個)Studenttemp=(Student)list.get(0);5.1.2List接口及實現類2.LinkedList類LinkedList也實現了List接口,它是List接口的鏈接列表實現,它實現所有可選的列表操作,并且允許所有元素(包括null)。除了實現List接口外,LinkedList類還為在列表的開頭及結尾get()、remove()和insert()元素提供了統(tǒng)一的命名方法。這些操作允許將鏈接列表用作堆棧、隊列或雙端隊列。LinkedList<Student>list=newLinkedList<Student>();//創(chuàng)建LinkedList對象list.addFirst(s1);//將s1加入LinkedList列表最前面(列表第一個)list.addFirst(s2);list.add(1,s3);//將s3加入LinkedList列表中(列表第二個)Studenttemp=(Student)list.get(i);list.remove(0);//刪除列表第一個對象(標號為0)5.1.2List接口及實現類3.Vector類Vector類可以實現可增長的對象數組。與數組一樣,它包含可以使用整數索引進行訪問的組件。但是,Vector的大小可以根據需要增大或縮小,以適應創(chuàng)建Vector后進行添加或移除項的操作。Vectorvector=newVector();//創(chuàng)建一個Vector對象vector.add(s1);//將s1加入Vector列表最前面(列表第一個)vector.add(s2);vector.add(1,s3);//將s3加入Vector列表中(列表第二個)Studenttemp=(Student)vector.get(i);vector.remove(0);5.1.2List接口及實現類4.Stack類Stack類表示后進先出(LIFO)的對象堆棧。它通過五個操作對類Vector進行了擴展,允許將向量視為堆棧。它提供了通常的push()和pop()操作,以及取堆棧頂點的peek()方法、測試堆棧是否為空的empty()方法、在堆棧中查找項并確定到堆棧頂距離的search()方法。Stackstack=newStack();//創(chuàng)建一個Stack對象stackstack.push(s1);//s1進棧(棧底)printStack(stack);//顯示棧中的所有元素stack.push(s2);//s2進棧printStack(stack);stack.pop();//出棧5.1.2List接口及實現類5.1集合框架Set接口是一個不包含重復元素的collection。更確切地講,set不包含滿足e1.equals(e2)的元素對e1和e2,并且最多包含一個null元素。Set接口要求集合元素是唯一的(但元素可以為null),不能保證迭代順序恒久不變,它是無序的。比較常用的實現類是HashSet類。5.1.3Set接口及實現類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接口及實現類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接口及實現類5.1集合框架Map接口儲存一組成對的鍵-值對象,提供key(鍵)到value(值)的映射。一個映射不能包含重復的鍵;每個鍵最多只能映射到一個值。映射順序定義為迭代器在映射的collection視圖上返回其元素的順序。某些映射實現可明確保證其順序,如TreeMap類;另一些映射實現則不保證順序,如最常見的HashMap類,它的儲存方式是哈希表,優(yōu)點是查詢指定元素效率高。5.1.4Map接口及實現類5.1集合框架5.1.4Map接口及實現類5.1集合框架HashMaphm=newHashMap();//創(chuàng)建一個HashMap對象hm.put("001",s1);//將s1加入hm中hm.put("002",s2);//put(Object,Object):一個是key一個是value,鍵值對hm.put("003",s3);//將對象s2替換掉(因為key是唯一的)

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

Students1=newStudent("001","張三"); ArrayList<Student>list=newArrayList<Student>(); list.add(s1); Studenttemp=list.get(0);//取出get數據的時候不需要時候類型轉換

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

{

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

溫馨提示

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

評論

0/150

提交評論