版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、集合框架第九章寫出運行結(jié)果public class Test public static void main(String args) int a = 0, 1, 2, 3, 4; int sum = 0; try for (int i = 1; i 6; i+) sum = sum + ai; System.out.println(sum= + sum); catch (ArrayIndexOutOfBoundsException e) System.out.println(數(shù)組越界); finally System.out.println(程序結(jié)束); 數(shù)組越界 程序結(jié)束 回顧與作業(yè)點評p
2、ublic class Test public static void main(String args) int numOne = 10; int numTwo = 0; try int c = numOne/numTwo; catch (ArithmeticException ex) System.out.println(除數(shù)不能為0); catch (Exception ex) System.out.println(發(fā)現(xiàn)異常); finally System.out.println(這是finally); 除數(shù)不能為0這是finally public class Test public
3、void add(int i) throws NullPointerException if(i=0) throw new NullPointerException(); System.out.println(add出現(xiàn)異常); public static void main(String args) Test t = new Test(); try t.add(0); System.out.println(add方法返回); catch(Exception e) System.out.println(捕獲異常); 捕獲異常 預(yù)習檢查List、Map是否都繼承自Collection接口 ?和數(shù)
4、組采用相同存儲結(jié)構(gòu)的集合類型是什么?Iterator接口的作用是什么?本章任務(wù)使用List保存和輸出寵物信息使用Map保存和輸出寵物信息使用Iterator遍歷各種集合使用泛型集合保存和輸出寵物信息本章目標掌握集合框架包含的內(nèi)容掌握ArrayList和LinkedList的使用掌握HashMap的使用掌握Iterator的使用掌握泛型集合的使用學員1學員20如何存儲每天的新聞信息?如何存儲ACCP課程的代碼與課程信息,能夠通過代碼方便地獲得課程信息?如果并不知道程序運行時會需要多少對象,或者需要更復(fù)雜方式存儲對象可以使用Java集合框架一維數(shù)組代碼1代碼N課程1課程N一一對應(yīng)新聞1新聞N每天的
5、新聞總數(shù)不確定,太少浪費空間,太多空間不足存儲一個班學員信息,假定一個班容納20名學員為什么使用集合框架 1接口CollectionListMap2具體類ArrayListLinkedListHashMap3算法Java集合框架為我們提供了一套性能優(yōu)良、使用方便的接口和類,它們位于java.util包中我們不必再重新發(fā)明輪子,只需學會如何使用它們,就可處理實際應(yīng)用中問題 Collections提供了對集合進行排序、遍歷等多種算法實現(xiàn)Java集合框架包含的內(nèi)容2-1SetTreeSetHashSetTreeMapJava集合框架包含的內(nèi)容2-2Collection 接口存儲一組不唯一,無序的對象
6、List 接口存儲一組不唯一,有序(插入順序)的對象Set 接口存儲一組唯一,無序的對象 Map接口存儲一組鍵值對象,提供key到value的映射 CollectionListMapSetList接口的實現(xiàn)類 ArrayList實現(xiàn)了長度可變的數(shù)組,在內(nèi)存中分配連續(xù)的空間。遍歷元素和隨機訪問元素的效率比較高LinkedList采用鏈表存儲方式。插入、刪除元素時效率比較高ListArrayListLinkedListArrayList集合類5-1存儲多條狗狗信息,獲取狗狗總數(shù),逐條打印出各條狗狗信息 通過List接口的實現(xiàn)類ArrayList實現(xiàn)該需求元素個數(shù)不確定要求獲得元素的實際個數(shù)按照存儲
7、順序獲取并打印元素信息ArrayList集合類5-2 public class Test1 public static void main(String args) Dog ououDog = new Dog(歐歐, 雪娜瑞);Dog yayaDog = new Dog(亞亞, 拉布拉多);Dog meimeiDog = new Dog(美美, 雪娜瑞);Dog feifeiDog = new Dog(菲菲, 拉布拉多);List dogs = new ArrayList();dogs.add(ououDog);dogs.add(yayaDog);dogs.add(meimeiDog);dog
8、s.add(2, feifeiDog); / 添加feifeiDog到指定位置System.out.println(共計有 + dogs.size() + 條狗狗。);System.out.println(分別是:);for (int i = 0; i dogs.size(); i+) Dog dog = (Dog) dogs.get(i);System.out.println(dog.getName() + t+ dog.getStrain();創(chuàng)建ArrayList對象并把四個狗狗對象放入其中輸出狗狗的數(shù)量獲取第i個元素 演示示例:使用ArrayList集合類ArrayList集合類5-3
9、擴充以下幾部分功能刪除指定位置的狗狗,如第一個狗狗刪除指定的狗狗,如刪除feifeiDog對象判斷集合中是否包含指定狗狗List接口提供相應(yīng)方法remove()、contains(),直接使用即可 ArrayList集合類5-4 public class Test2 public static void main(String args) / 1、創(chuàng)建多個狗狗對象/ 2、創(chuàng)建ArrayList集合對象并把多個狗狗對象放入其中System.out.println(刪除之前共計有 +dogs.size() + 條狗狗。);dogs.remove(0);dogs.remove(feifeiDog);
10、System.out.println(n刪除之后還有 + dogs.size() + 條狗狗。);if(dogs.contains(meimeiDog)System.out.println(n集合中包含美美的信息);elseSystem.out.println(n集合中不包含美美的信息);刪除第一個狗狗和feifeiDog判斷是否包含指定狗狗演示示例:使用ArrayList集合類ArrayList集合類5-5List接口常用方法 方法名說 明boolean add(Object o)在列表的末尾順序添加元素,起始索引位置從0開始void add(int index,Object o)在指定的索
11、引位置添加元素。索引位置必須介于0和列表中元素個數(shù)之間int size()返回列表中的元素個數(shù)Object get(int index)返回指定索引位置處的元素。取出的元素是Object類型,使用前需要進行強制類型轉(zhuǎn)換boolean contains(Object o)判斷列表中是否存在指定元素boolean remove(Object o)從列表中刪除元素Objectremove(int index)從列表中刪除指定位置元素,起始索引位置從0開始練習添加多個企鵝信息到List中需求說明:把多個企鵝的信息添加到集合中查看企鵝的數(shù)量遍歷所有企鵝的信息刪除集合中部分企鵝的元素判斷集合中是否包含指定
12、企鵝 完成時間:20分鐘共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解LinkedList集合類3-1在集合任何位置(頭部、中間、尾部)添加、獲取、刪除狗狗對象插入、刪除操作頻繁時,可使用LinkedList來提高效率LinkedList還額外提供對頭部和尾部元素進行添加和刪除操作的方法 LinkedList集合類3-2public class Test3 public static void main(String args) / 創(chuàng)建多個狗狗對象LinkedList dogs = new LinkedList();dogs.add(ououDog);dogs.add(y
13、ayaDog);dogs.addLast(meimeiDog);dogs.addFirst(feifeiDog);Dog dogFirst= (Dog)dogs.getFirst();System.out.println(第一條狗狗昵稱是+dogFirst.getName() );Dog dogLast= (Dog)dogs.getLast();System.out.println(最后一條狗狗昵稱是+dogLast.getName();dogs.removeFirst();dogs.removeLast();創(chuàng)建LinkedList集合對象并把多個狗狗對象放入其中獲取第一條狗狗信息獲取最后一
14、條狗狗信息刪除第一個狗狗和最后一個狗狗演示示例:使用LinkedList集合類LinkedList集合類3-3LinkedList的特殊方法方法名說 明voidaddFirst(Object o)在列表的首部添加元素voidaddLast(Object o)在列表的末尾添加元素ObjectgetFirst()返回列表中的第一個元素ObjectgetLast()返回列表中的最后一個元素ObjectremoveFirst()刪除并返回列表中的第一個元素ObjectremoveLast()刪除并返回列表中的最后一個元素小結(jié)集合框架有何好處? Java集合框架中包含哪些接口和哪些類?ArrayList
15、和LinkedList有何異同?用紙筆繪制List接口和兩個實現(xiàn)類的類圖 Map接口3-1 建立國家英文簡稱和中文全名間的鍵值映射,并通過key對value進行操作,應(yīng)該如何實現(xiàn)數(shù)據(jù)的存儲和操作呢? Map接口專門處理鍵值映射數(shù)據(jù)的存儲,可以根據(jù)鍵實現(xiàn)對值的操作最常用的實現(xiàn)類是HashMap Map接口3-2 public class Test4 public static void main(String args) Map countries = new HashMap();countries.put(CN, 中華人民共和國);countries.put(RU, 俄羅斯聯(lián)邦);countr
16、ies.put(FR, 法蘭西共和國);countries.put(US, 美利堅合眾國);String country = (String) countries.get(CN);System.out.println(CN對應(yīng)的國家是: + country);System.out.println(Map中共有+countries.size()+組數(shù)據(jù));countries.remove(FR);System.out.println(Map中包含F(xiàn)R的key嗎? + countries.containsKey(FR);System.out.println( countries.keySet()
17、) ;System.out.println( countries.values() );System.out.println( countries );使用HashMap存儲多組鍵值對獲取Map元素個數(shù)刪除指定元素,判斷是否包含指定元素顯示鍵集、值集和鍵值對集獲取指定元素的值演示示例:使用HashMap集合類Map接口3-3Map接口常用方法方法名說 明Object put(Object key, Object val)以“鍵-值對”的方式進行存儲Object get (Object key)根據(jù)鍵返回相關(guān)聯(lián)的值,如果不存在指定的鍵,返回nullObject remove (Object ke
18、y)刪除由指定的鍵映射的“鍵-值對”int size()返回元素個數(shù)Set keySet ()返回鍵的集合Collection values ()返回值的集合booleancontainsKey (Object key)如果存在由指定的鍵映射的“鍵-值對”,返回true集合類對比Vector和ArrayList的異同實現(xiàn)原理相同,功能相同,很多情況下可以互用兩者的主要區(qū)別如下Vector線程安全,ArrayList重速度輕安全,線程非安全長度需增長時,Vector默認增長一倍,ArrayList增長50%Hashtable和HashMap的異同實現(xiàn)原理相同,功能相同,在很多情況下可以互用兩者的
19、主要區(qū)別如下Hashtable繼承Dictionary類,HashMap實現(xiàn)Map接口Hashtable線程安全,HashMap線程非安全Hashtable不允許null值,HashMap允許null值開發(fā)過程中,最好使用ArrayList和HashMap練習根據(jù)寵物昵稱查找寵物需求說明:根據(jù)寵物昵稱查找對應(yīng)寵物,如果找到,顯示寵物信息,否則給出錯誤提示 完成時間:15分鐘共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解迭代器Iterator2-1如何遍歷List集合呢?方法1:通過for循環(huán)和get()方法配合實現(xiàn)遍歷方法2:通過迭代器Iterator實現(xiàn)遍歷 所有集合接口
20、和類都沒有提供相應(yīng)遍歷方法,而是由Iterator實現(xiàn)集合遍歷Collection 接口的iterate()方法返回一個Iterator,然后通過Iterator接口的兩個方法可實現(xiàn)遍歷boolean hasNext(): 判斷是否存在另一個可訪問的元素 Object next(): 返回要訪問的下一個元素迭代器Iterator2-2public class Test5 public static void main(String args) / 1、創(chuàng)建多個狗狗對象Dog ououDog = new Dog(歐歐, 雪娜瑞);/ 2、創(chuàng)建ArrayList集合對象并把多個狗狗對象放入其中Li
21、st dogs = new ArrayList ();dogs.add(ououDog);System.out.println(使用Iterator遍歷,所有狗狗昵稱和品種是:);Iterator it = dogs.iterator();while (it.hasNext() Dog dog = (Dog) it.next();System.out.println(dog.getName()+t+dog.getStrain();通過迭代器依次輸出所有狗狗的信息演示示例:使用Iterator遍歷集合練習迭代List中企鵝信息需求說明:使用ArrayList和LinkedList存儲多個企鵝信息
22、,然后統(tǒng)一使用Iterator進行遍歷 完成時間:15分鐘共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解泛型集合3-1把任何類型對象通過add(Object obj) 放入List中,認為只是Object類型通過get(int index) 取出List中元素時必須進行強制類型轉(zhuǎn)換,繁瑣而且容易出現(xiàn)異常使用Map的put(Object key, Object value)和get (Object key)存取對象時存在同樣問題使用Iterator的next()方法獲取元素時存在同樣問題JDK5.0中通過引入泛型有效的解決了這個問題JDK5.0使用泛型改寫了集合框架中的所有接
23、口和類泛型集合3-2public class Test6 public static void main(String args) / 1、創(chuàng)建多個狗狗對象Dog dog1 = new Dog(歐歐, 雪娜瑞);/ 2、創(chuàng)建ArrayList集合對象并把多個狗狗對象放入其中List dogs = new ArrayList();dogs.add(dog1);/dogs.add(hello); / 3、 顯示第三個元素的信息Dog dog = dogs.get(2); System.out.println(第三個狗狗的信息如下:);System.out.println(dog.getName() + t + dog.getStrain();/4、使用I
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 回醫(yī)學中的針灸穴位定位與操作技巧
- 空域管理與規(guī)劃考核試卷
- 船舶防污染技術(shù)與措施考核試卷
- 航班飛行途中健康建議的持續(xù)更新與推廣考核試卷
- 元數(shù)據(jù)驅(qū)動的程序集監(jiān)控與報警-洞察分析
- 隱私保護顯示技術(shù)-洞察分析
- 非織造布在汽車油水分離器的過濾效果與耐久性考核試卷
- 斜拉橋施工自動化技術(shù)-洞察分析
- 藥物中間體手性選擇性合成-洞察分析
- 關(guān)愛殘疾兒童工作計劃
- 護理人才梯隊建設(shè)規(guī)劃方案
- 睡眠區(qū)布局設(shè)計打造舒適宜人的睡眠環(huán)境
- 建筑設(shè)計行業(yè)項目商業(yè)計劃書
- 慢性病防治健康教育知識講座
- 骶尾部藏毛疾病診治中國專家共識(2023版)
- 【高新技術(shù)企業(yè)所得稅稅務(wù)籌劃探析案例:以科大訊飛為例13000字(論文)】
- 幽門螺旋桿菌
- 智慧農(nóng)業(yè)利用技術(shù)提高農(nóng)業(yè)可持續(xù)發(fā)展的方案
- 制冷壓縮機安全操作規(guī)程范文
- 初中歷史考試試題答題卡模版
- 《草圖大師建模》授課計劃+教案
評論
0/150
提交評論