




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
集合與泛型Java應用開發(fā)與實踐
酒店管理系統(tǒng)的設計學習目標了解集合框架的構成了解Collection接口及常用子接口掌握List接口及實現(xiàn)類的用法了解Set接口及實現(xiàn)類的用法掌握Map接口及實現(xiàn)類的用法了解泛型的意義理解在類和接口中的應用5.1集合框架5.2泛型5.3實訓5集合實現(xiàn)類的基礎練習目錄5.1集合框架在Java語言中的java.util包提供了一些集合類,這些集合類又被稱作容器,是一個包含多個元素的對象,集合可以對數(shù)據(jù)進行存儲,刪除,修改、查詢等操作。它不同與數(shù)組,數(shù)組有固定長度,所以在定義數(shù)組的時候必須預先確定數(shù)組的大小,集合不必確定固定的大小,在存放對象是擁有更多的靈活性。集合框架是一個用來代表和操縱集合的統(tǒng)一架構。接口:表示集合的抽象數(shù)據(jù)類型。實現(xiàn)類:集合接口的具體實現(xiàn),是重用性很高的數(shù)據(jù)結構。算法:用來根據(jù)需要對實體類中的對象進行計算,比如存儲、查找、排序等。同一種算法可以對不同的集合實現(xiàn)類進行計算,這是利用了“多態(tài)”。5.1集合框架Collection接口是集合接口樹的根,它是集合框架的頂級接口。Collection接口是List、Queue和Set接口的父接口。5.1.1Collection接口及常用子接口5.1集合框架接口List<E>是有序的collection(也稱為序列)。此接口的用戶可以對列表中每個元素的插入位置進行精確地控制。用戶可以根據(jù)元素的整數(shù)索引(在列表中的位置)訪問元素,并搜索列表中的元素。使用List接口的實現(xiàn)類時,可以指定列表中每個元素的插入位置,用戶可以根據(jù)元素的索引值(即元素在列表中的位置)訪問元素,并搜索列表中的元素。5.1.2List接口及實現(xiàn)類方法聲明
方法功能voidadd(intindex,Objectelement)在列表的index位置添加元素Objectremove(intindex)刪除列表中index位置的元素Objectget(intindex)返回列表index位置的元素Objectset(intindex,Objectelement)用指定元素替換列表中指定位置的元素1.ArrayList類ArrayList類是List接口的大小可變數(shù)組的實現(xiàn),它實現(xiàn)了所有可選列表操作,并允許包括null在內(nèi)的所有元素。除了實現(xiàn)List接口外,此類還提供一些方法來操作內(nèi)部用來存儲列表的數(shù)組的大小。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接口及實現(xiàn)類2.LinkedList類LinkedList也實現(xiàn)了List接口,它是List接口的鏈接列表實現(xiàn),它實現(xiàn)所有可選的列表操作,并且允許所有元素(包括null)。除了實現(xiàn)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接口及實現(xiàn)類3.Vector類Vector類可以實現(xiàn)可增長的對象數(shù)組。與數(shù)組一樣,它包含可以使用整數(shù)索引進行訪問的組件。但是,Vector的大小可以根據(jù)需要增大或縮小,以適應創(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接口及實現(xiàn)類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接口及實現(xiàn)類5.1集合框架Set接口是一個不包含重復元素的collection。更確切地講,set不包含滿足e1.equals(e2)的元素對e1和e2,并且最多包含一個null元素。Set接口要求集合元素是唯一的(但元素可以為null),不能保證迭代順序恒久不變,它是無序的。比較常用的實現(xiàn)類是HashSet類。5.1.3Set接口及實現(xiàn)類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接口及實現(xiàn)類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接口及實現(xiàn)類5.1集合框架Map接口儲存一組成對的鍵-值對象,提供key(鍵)到value(值)的映射。一個映射不能包含重復的鍵;每個鍵最多只能映射到一個值。映射順序定義為迭代器在映射的collection視圖上返回其元素的順序。某些映射實現(xiàn)可明確保證其順序,如TreeMap類;另一些映射實現(xiàn)則不保證順序,如最常見的HashMap類,它的儲存方式是哈希表,優(yōu)點是查詢指定元素效率高。5.1.4Map接口及實現(xiàn)類5.1集合框架5.1.4Map接口及實現(xiàn)類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接口及實現(xiàn)類5.1集合框架ArrayList:元素單個,效率高,多用于查詢。LinkedList:元素單個,多用于插入和刪除。Vector:元素單個,線程安全,多用于查詢。Stack:元素單個,先進后出。它通過5個操作對Vector類進行擴展,允許將向量視為堆棧。HashMap:元素成對,元素可為空。HashTable:元素成對,線程安全,元素不可為空。5.1.5各種集合的特點5.2泛型泛型是程序設計語言的一種特性,允許程序員在強類型程序設計語言中編寫代碼時定義一些可變部分。Java中泛型的引入主要是為了提高Java程序的類型安全,避免了集合類型元素在運行期出現(xiàn)類型轉換異常,增加了編譯時類型的檢查。
Students1=newStudent("001","張三"); ArrayList<Student>list=newArrayList<Student>(); list.add(s1); Studenttemp=list.get(0);//取出get數(shù)據(jù)的時候不需要時候類型轉換
System.out.println(temp);5.2.1泛型的意義5.2泛型Java中的泛型主要使用在類、方法與接口中。通常是在定義類時,在類的名稱后,用尖括號括起來,用大寫字母(T、E、K、V等)表示一種未知類型。雖然是未知類型,但可以把它作為已知類型使用,直到產(chǎn)生這個類的對象時,指是是哪種類型。泛型使用在類上的用法,其語法如下:classQuestion<T>
{
To;//某個類型的變量作為其成員變量o publicQuestion(Tt)//構造方法 { o=t; }}5.2.2泛型在類中的應用5.2泛型Java中的泛型也廣泛使用在接口中,泛型接口與泛型類的定義及使用基本相同。泛型接口通常被用在各種類的生產(chǎn)器中。其語法如下:interface接口名稱<接口標示>{}interfaceinterfo<T>{publicTgetInterfo();}5.2.2泛型在接口中的應用5.3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中信息技術課件美術
- 人工智能與大數(shù)據(jù)在2025年紡織服裝行業(yè)智能化生產(chǎn)中的應用前景報告
- 數(shù)學教育文獻研究綜述
- 齲齒護理健康教育
- 2025版燒烤火鍋餐飲品牌合作經(jīng)營合同
- 二零二五年度WPS辦公軟件定制化借款協(xié)議范本
- 2025版AAA股權融資協(xié)議書及投資決策委員會協(xié)議
- 二零二五版農(nóng)產(chǎn)品倉儲運輸質(zhì)量保障合同范本
- 二零二五年度電子信息產(chǎn)品采購訂單合同質(zhì)量保證
- 2025年智能電動車輛運營承包合作協(xié)議范本
- 2025年甘肅省民航機場集團校園招聘45人筆試參考題庫帶答案詳解
- 豬場生豬銷售管理制度
- 初中教師坐班管理制度
- 2025年高考真題-英語(全國一卷) 含答案
- 頁巖氣儲層表征評價技術進展及其未來發(fā)展趨勢分析
- 統(tǒng)編版高中政治必修三《政治與法治》期末復習:選擇題刷題練習題(含答案解析)
- 2025-2030年中國線纜設備行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 兒童情商課件
- 2025年湖北荊門市交通旅游投資集團有限公司招聘筆試參考題庫含答案解析
- 四人合伙養(yǎng)豬合同協(xié)議
- 食品產(chǎn)品溯源管理制度
評論
0/150
提交評論