




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第05章集合和泛型本章內(nèi)容1Java 集合2泛型講解時(shí)間:40分鐘實(shí)踐時(shí)間:20分鐘1 Java 集合1.1 集合框架Employee emp1 = new Employee();Employee emp2 = new Employee();.Employee empArray = new Employee10;/初始化數(shù)組大小公司的員工數(shù)量在不斷的變化 需要同時(shí)存儲(chǔ)員工編號(hào)和員工對(duì)象,且根據(jù)編號(hào)查找對(duì)應(yīng)的員工對(duì)象使用數(shù)組可否解決以上需求?使用集合可以解決復(fù)雜的數(shù)據(jù)存儲(chǔ)問題1.1 集合框架的概念與結(jié)構(gòu)n Java中的集合框架是指一系列存儲(chǔ)數(shù)據(jù)的接口和類,這些類和接口 都位于java.util包
2、中n 使用集合框架可以解決復(fù)雜的數(shù)據(jù)存儲(chǔ)問題,Java中內(nèi)置了豐富的 集合框架1.2 List接口Collection接口List接口存儲(chǔ)順序有序可以保存重復(fù)元素實(shí)現(xiàn)n List接口的定義1.2 List接口的定義 ArrayList用法類似于數(shù)組,且其容量可按需要?jiǎng)討B(tài)調(diào)整,亦被稱為動(dòng)態(tài)數(shù)組List接口的常用子類有:ArrayList和Vectorn List接口的常用方法List list = new ArrayList()/list接口指向?qū)崿F(xiàn)類的實(shí)例Student stu = new Student();/實(shí)例化Studentlist.add(java oop); list.add(1)
3、;/自動(dòng)裝箱將int類型自動(dòng)包裝成Integerlist.add(jsp); list.add(Stu);/添加Student對(duì)象list.remove(stu);/刪除指定的內(nèi)容list.remove(1);/ 刪除指定位置的元素for(int i=0;ilist.size();i+) System.out.println(list.get(i);/根據(jù)索引獲取指定位置的元素 list.removeAll(list);/刪除集合中的所有元素 System.out.println(list.size();/獲取集合中元素的個(gè)數(shù)1.2 List接口的定義返回類型方法名稱描述voidaddFirs
4、t()將指定元素插入此列表的開頭voidaddLast()將指定元素添加到此列表的結(jié)尾ObjectremoveFirst()移除并返回此列表的第一個(gè)元素ObjectremoveLast()移除并返回此列表的最后一個(gè)元素booleanadd(Object o)將指定的元素添加到列表中n LinkedList表示鏈表的操作類,它同時(shí)實(shí)現(xiàn)了List和Queue接口。n LinkedList中的存放元素按照先進(jìn)先出方式排序,LinkedList除實(shí)現(xiàn)上表 中的方法外,還提供如下方法 :1.2 List接口的定義import java.util.*;public class LinkedListDemo
5、 public static void main(String args) LinkedList linkedList = new LinkedList();linkedList.add(a);/向鏈表添加數(shù)據(jù)linkedList.add(b);linkedList.add(c);linkedList.addFirst(m);/在鏈表表頭增加數(shù)據(jù)linkedList.addLast(n);/在鏈表表尾增加數(shù)據(jù)System.out.println(linkedList);/輸出鏈表內(nèi)容LinkedList子類實(shí)現(xiàn)了List接口1.2 List接口的定義ArrayListVector當(dāng)元素存儲(chǔ)達(dá)到
6、指定容量時(shí),自動(dòng)增長(zhǎng)為原容量的二分之一當(dāng)元素存儲(chǔ)達(dá)到指定容量時(shí),原容量自動(dòng)增長(zhǎng)一倍非線程安全且性能更高線程安全但性能較低Vector類能夠?qū)崿F(xiàn)可增長(zhǎng)的對(duì)象數(shù)組;其大小可以根據(jù)需要增大或縮小實(shí)例化Vector: List list = new Vector()/list接口指向?qū)崿F(xiàn)類的實(shí)例n ArrayList和Vector的比較n 常用方法Vector1.3 Set接口Collection接口Set接口存儲(chǔ)順序無序不可以保存重復(fù)元素實(shí)現(xiàn)nSet接口的定義及常用子類1.3 Set接口的定義常用子類n Set接口常用子類:HashSetimport java.util.*;public class
7、 SetDemo public static void main(String args)Set set = new HashSet();set.add(apple);/添加元素set.add(orange);/添加元素set.add(pear);set.add(pear);/重復(fù)元素不能加入set.add(banana); System.out.println(set);返回類型方法描述booleanhashNext()如果有元素可迭代Objectnext()返回迭代的下一個(gè)元素n HashSet類中沒有提供根據(jù)集合索引獲取索引對(duì)應(yīng)的值的方法,因此遍歷HashSet時(shí)需要使用Iterator
8、迭代器n Iterator是對(duì)集合進(jìn)行迭代的迭代器,通過迭代器可以對(duì)集合進(jìn)行遍 歷。Iterator的主要方法如下:1.3 Set接口的定義常用子類public static void main(String args) Set set = new HashSet(); set.add(apple); set.add(orange); set.add(pear); set.add(pear);/重復(fù)元素不能加入 set.add(banana); Iterator iterator = set.iterator(); while(iterator.hasNext() System.out.pri
9、ntln(iterator.next(); 返回對(duì)set 中的元素進(jìn)行迭代的迭代器 返回迭代器的下一個(gè)元素 判斷迭代器中是否有元素可迭代 1.3 Set接口的定義常用子類1.4 Map接口Map接口以鍵值對(duì)形式存儲(chǔ)數(shù)據(jù)不允許出現(xiàn)重復(fù)鍵元素存儲(chǔ)順序無序n Map接口定義1.4 Map接口定義返回類型方法描述Objectget(Object key)根據(jù)key取得valueObjectput(Obejct k,Object v)向集合中加入元素voidclear()清除Map集合booleanisEmpty()判斷集合是否為空booleancontainsKey(Object object)判斷指
10、定的key是否存在booleancontainsValue(Object value)判斷指定的value是否存在SetkeySet()Map中所有的key的集合Objectremove(Object key)根據(jù)key刪除對(duì)應(yīng)的valueCollectionvalues()取出全部的valueintsize()獲得集合的長(zhǎng)度nMap接口常用方法如下所示1.4 Map接口的子類n Map接口的常用子類有:HashMap和Hashtable Map map = new HashMap(); map.put(bookName,java oop); map.put(author, john); ma
11、p.put(price, 50);/自動(dòng)裝箱 map.put(price, 80);/出現(xiàn)重復(fù)的鍵:price map.put(null,nothing);/空鍵 Collection col = map.values();/取出Map中全部的value Iterator iterator = col.iterator(); while(iterator.hasNext() System.out.println(iterator.next(); HashMap允許出現(xiàn)空鍵1.4 Map接口的子類nHashMap不允許出現(xiàn)重復(fù)鍵,但允許出現(xiàn)空鍵和空值 Map map = new Hashtabl
12、e(); map.put(“1”, null);/空值 map.put(null, java oop);/空鍵 Collection col = map.values(); Iterator iterator = col.iterator(); while (iterator.hasNext() System.out.println(iterator.next(); Hashtable不允許出現(xiàn)空鍵和空值1.5 泛型 public static void main(String args) List list = new ArrayList();list.add(java oop);list.
13、add(3);list.add(new Student();list.add(new Book();for(int i=0;ilist.size();i+)/list.get(i)list.get(i)該強(qiáng)制轉(zhuǎn)換成哪種類型?Java中的泛型,是指向list中添加統(tǒng)一類型的數(shù)據(jù)時(shí),不會(huì)出現(xiàn)類型轉(zhuǎn)換無法確定的問題。1.5 泛型概述n泛型在建立對(duì)象時(shí)不指定類中屬性的具體類型,而是在聲明及實(shí)例化對(duì)象時(shí)由外部指定。泛型可以提高數(shù)據(jù)安全性1.5 泛型應(yīng)用泛型定義泛型類定義泛型對(duì)象定義n 泛型的主要原理是聲明類時(shí)通過標(biāo)識(shí)表示類中某個(gè)屬性的類型,或某方法的返回值及參數(shù)類型。此時(shí)聲明和實(shí)例化類時(shí)只要指定需要的類
14、型即可 n 泛型定義包括泛型類定義和泛型對(duì)象定義,其中泛型對(duì)象 定義的應(yīng)用最為普遍 1.5 泛型應(yīng)用n 泛型對(duì)象定義 類名稱 對(duì)象名稱 = new 類名稱();List list = new ArrayList();Student stu1 = new Student();stu1.setStuName(tom);stu1.setAge(20);Student stu2 = new Student();stu2.setStuName(john);stu2.setAge(19);list.add(stu1);list.add(stu2);/list.add(java oop);/不允許將Stri
15、ng類型元素添加至集合中for(int i=0;ilist.size();i+) System.out.print(姓名:+list.get(i).getStuName()+ ); System.out.println(年齡:+list.get(i).getAge(); 統(tǒng)一集合List中元素的數(shù)據(jù)類型是Student類型 實(shí)踐練習(xí)實(shí)踐時(shí)間:20分鐘 訓(xùn)練內(nèi)容l 使用HashMap 需求說明l 定義一個(gè)字符串,統(tǒng)計(jì)字符串中每個(gè)字符的個(gè)數(shù)。如“a,d,b,d,a”l 結(jié)果為實(shí)現(xiàn)思路l使用Scanner接收鍵盤輸入的字符串l使用HashMap統(tǒng)計(jì)每個(gè)字符的個(gè)數(shù),其中key保存字符,value用來記錄字符的數(shù)量實(shí)踐練習(xí)需求說明l使用對(duì)象集合完成如下功能l1.員工信息的查看l2.刪除員工實(shí)踐時(shí)間:30分鐘實(shí)現(xiàn)思路l創(chuàng)建一個(gè)員工對(duì)象l包含員工編號(hào),員工姓名,員工性別,員工年齡 屬性l創(chuàng)建一個(gè) 員工對(duì)象的集合l初始化3條員工記錄(并使用在控制臺(tái)循環(huán)打印,顯示員工信息)l在員工集合中刪除一條員工記錄l使用集合中提供的方法刪除員工本章總結(jié)Java中的集合框架包括Collection和Map兩大基本接口;其中List、Set繼承Collection接口 A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025探索服務(wù)合同的試用期
- 2024年超臨界CO2萃取裝置膜生物反應(yīng)器及其他項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2025潤滑油銷售合同協(xié)議
- 2025全日制勞動(dòng)合同
- 2025年國稅局合同制人員醫(yī)療險(xiǎn)問題
- 2025勞動(dòng)合同(教師)
- 2025宜昌市存量房買賣合同
- 2025《廣州市合同范本》
- 2025深圳市租賃合同協(xié)議
- 2025國內(nèi)認(rèn)證委托合同
- (三診)綿陽市高中2022級(jí)高三第三次診斷性考試 歷史試卷A卷(含答案)
- 麻醉專業(yè)考試試題及答案
- 2024華能四川能源開發(fā)有限公司下屬單位招聘筆試參考題庫附帶答案詳解
- 山東省高中名校2025屆高三4月校際聯(lián)合檢測(cè)大聯(lián)考生物試題及答案
- 2025年武漢數(shù)學(xué)四調(diào)試題及答案
- 【MOOC】數(shù)學(xué)建模精講-西南交通大學(xué) 中國大學(xué)慕課MOOC答案
- 職業(yè)病防護(hù)設(shè)施與個(gè)體防護(hù)用品的使用和維護(hù)
- 2024年全國高中數(shù)學(xué)聯(lián)賽北京賽區(qū)預(yù)賽一試試題(解析版)
- 綠化養(yǎng)護(hù)服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 中國紡織文化智慧樹知到期末考試答案2024年
- (正式版)HGT 6313-2024 化工園區(qū)智慧化評(píng)價(jià)導(dǎo)則
評(píng)論
0/150
提交評(píng)論