第8章 集合框架_第1頁
第8章 集合框架_第2頁
第8章 集合框架_第3頁
第8章 集合框架_第4頁
第8章 集合框架_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第第8章章 集合框架集合框架本章目標n掌握集合框架包含的內容n掌握ArrayList和LinkedList的使用n掌握HashMap的使用n掌握Iterator的使用n掌握泛型集合的使用學員1學員20 如何存儲每天的新聞信息?如何存儲每天的新聞信息? 如何存儲如何存儲ACCP課程的代碼與課程信息,能夠通過代碼課程的代碼與課程信息,能夠通過代碼方便地獲得課程信息?方便地獲得課程信息?如果并不知道程序運行時會需要多少對象,或者需要更復雜方式存儲如果并不知道程序運行時會需要多少對象,或者需要更復雜方式存儲對象對象可以使用可以使用Java集合框架集合框架一維數組一維數組代碼1代碼N課程1課程N一一對應

2、一一對應新聞1新聞N每天的新聞總數不每天的新聞總數不確定,太少浪費空確定,太少浪費空間,太多空間不足間,太多空間不足 存儲一個班學員信息,假定一個班容納存儲一個班學員信息,假定一個班容納20名學員名學員為什么使用集合框架 1接口接口CollectionListMap2具體類具體類ArrayListLinkedListHashMap3算法算法Java集合框架為我們提供了一套性能優良、使用方便的接口和類,它們集合框架為我們提供了一套性能優良、使用方便的接口和類,它們位于位于java.util包中包中我們不必再重新發明,只需學會如何使用它們,就可處理實際應用中問題我們不必再重新發明,只需學會如何使用

3、它們,就可處理實際應用中問題 Collections提供了對集合進行排序、提供了對集合進行排序、遍歷等多種算法實現遍歷等多種算法實現Java集合框架包含的內容2-1SetTreeSetHashSetTreeMapJava集合框架包含的內容2-2nCollection 接口存儲一組不唯一,無序的對象nList 接口存儲一組不唯一,有序(插入順序)的對象nSet 接口存儲一組唯一,無序的對象 nMap接口存儲一組鍵值對象,提供key到value的映射 CollectionListMapSetList接口的實現類 nArrayList實現了長度可變的數組,在內存中分配連續的空間。遍歷元素和隨機訪問元

4、素的效率比較高nLinkedList采用鏈表存儲方式。插入、刪除元素時效率比較高ListArrayListLinkedListArrayList集合類5-1n存儲多條狗狗信息,獲取狗狗總數,逐條打印出各條狗狗信息 n通過List接口的實現類ArrayList實現該需求n元素個數不確定n要求獲得元素的實際個數n按照存儲順序獲取并打印元素信息ArrayList集合類5-2 public class Test1 public static void main(String args) Dog ououDog = new Dog(歐歐歐歐, 雪娜瑞雪娜瑞);Dog yayaDog = new Dog(

5、亞亞亞亞, 拉布拉多拉布拉多);Dog meimeiDog = new Dog(美美美美, 雪娜瑞雪娜瑞);Dog feifeiDog = new Dog(菲菲菲菲, 拉布拉多拉布拉多);List dogs = new ArrayList();dogs.add(ououDog);dogs.add(yayaDog);dogs.add(meimeiDog);dogs.add(2, feifeiDog); / 添加添加feifeiDog到指定位置到指定位置System.out.println(共計有共計有 + dogs.size() + 條狗狗。條狗狗。);System.out.println(分別

6、是:分別是:);for (int i = 0; i dogs.size(); i+) Dog dog = (Dog) dogs.get(i);System.out.println(dog.getName() + t+ dog.getStrain();創建創建ArrayList對象并把四個對象并把四個狗狗對象放入其中狗狗對象放入其中輸出狗狗的數量輸出狗狗的數量獲取第獲取第i i個元素個元素 演示示例:使用演示示例:使用ArrayList集合類集合類ArrayList集合類5-3n擴充以下幾部分功能n刪除指定位置的狗狗,如第一個狗狗n刪除指定的狗狗,如刪除feifeiDog對象n判斷集合中是否包含

7、指定狗狗nList接口提供相應方法remove()、contains(),直接使用即可 ArrayList集合類5-4 public class Test2 public static void main(String args) / 1、創建多個狗狗對象、創建多個狗狗對象/ 2、創建、創建ArrayList集合對象并把多個狗狗對象放入其中集合對象并把多個狗狗對象放入其中System.out.println(刪除之前共計有刪除之前共計有 +dogs.size() + 條狗狗。條狗狗。);dogs.remove(0);dogs.remove(feifeiDog);System.out.print

8、ln(n刪除之后還有刪除之后還有 + dogs.size() + 條狗狗。條狗狗。);if(dogs.contains(meimeiDog)System.out.println(n集合中包含美美的信息集合中包含美美的信息);elseSystem.out.println(n集合中不包含美美的信息集合中不包含美美的信息);刪除第一個狗狗和刪除第一個狗狗和feifeiDog判斷是否包含指定狗狗判斷是否包含指定狗狗演示示例:使用演示示例:使用ArrayList集合類集合類ArrayList集合類5-5nList接口常用方法 方法名說 明boolean add(Object o)在列表的末尾順序添加元素

9、,起始索引位置從0開始void add(int index,Object o)在指定的索引位置添加元素。索引位置必須介于0和列表中元素個數之間int size()返回列表中的元素個數Object get(int index)返回指定索引位置處的元素。取出的元素是Object類型,使用前需要進行強制類型轉換boolean contains(Object o)判斷列表中是否存在指定元素boolean remove(Object o)從列表中刪除元素Objectremove(int index)從列表中刪除指定位置元素,起始索引位置從0開始LinkedList集合類3-1n在集合任何位置(頭部、中間

10、、尾部)添加、獲取、刪除狗狗對象n插入、刪除操作頻繁時,可使用LinkedList來提高效率nLinkedList還額外提供對頭部和尾部元素進行添加和刪除操作的方法 LinkedList集合類3-2public class Test3 public static void main(String args) / 創建多個狗狗對象創建多個狗狗對象LinkedList dogs = new LinkedList();dogs.add(ououDog);dogs.add(yayaDog);dogs.addLast(meimeiDog);dogs.addFirst(feifeiDog);Dog dog

11、First= (Dog)dogs.getFirst();System.out.println(第一條狗狗昵稱是第一條狗狗昵稱是+dogFirst.getName() );Dog dogLast= (Dog)dogs.getLast();System.out.println(最后一條狗狗昵稱是最后一條狗狗昵稱是+dogLast.getName();dogs.removeFirst();dogs.removeLast();創建創建LinkedList集合對象并集合對象并把多個狗狗對象放入其中把多個狗狗對象放入其中獲取第一條狗狗信息獲取第一條狗狗信息獲取最后一條狗狗信息獲取最后一條狗狗信息刪除第一個

12、狗狗和最后刪除第一個狗狗和最后一個狗狗一個狗狗演示示例:使用演示示例:使用LinkedList集合類集合類LinkedList集合類3-3nLinkedList的特殊方法方法名說 明voidaddFirst(Object o)在列表的首部添加元素voidaddLast(Object o)在列表的末尾添加元素ObjectgetFirst()返回列表中的第一個元素ObjectgetLast()返回列表中的最后一個元素ObjectremoveFirst()刪除并返回列表中的第一個元素ObjectremoveLast()刪除并返回列表中的最后一個元素 Map接口3-1 n建立國家英文簡稱和中文全名間的

13、鍵值映射,并通過key對value進行操作,應該如何實現數據的存儲和操作呢? nMap接口專門處理鍵值映射數據的存儲,可以根據鍵實現對值的操作n最常用的實現類是HashMap Map接口3-2 public class Test4 public static void main(String args) Map countries = new HashMap();countries.put(CN, 中華人民共和國中華人民共和國);countries.put(RU, 俄羅斯聯邦俄羅斯聯邦);countries.put(FR, 法蘭西共和國法蘭西共和國);countries.put(US, 美利堅

14、合眾國美利堅合眾國);String country = (String) countries.get(CN);System.out.println(CN對應的國家是:對應的國家是: + country);System.out.println(Map中共有中共有+countries.size()+組數據組數據);countries.remove(FR);System.out.println(Map中包含中包含FR的的key嗎?嗎? + countries.containsKey(FR);System.out.println( countries.keySet() ) ;System.out.pr

15、intln( countries.values() );System.out.println( countries );使用使用HashMap存儲存儲多組鍵值對多組鍵值對獲取獲取Map元素個數元素個數刪除指定元素,判斷是刪除指定元素,判斷是否包含指定元素否包含指定元素顯示鍵集、值集和鍵值對集顯示鍵集、值集和鍵值對集獲取指定元素的值獲取指定元素的值演示示例:使用演示示例:使用HashMap集合類集合類CN對應的國家是:中華人民共和國Map中共有4組數據Map中包含FR的key嗎?falseUS, RU, CN美利堅合眾國, 俄羅斯聯邦, 中華人民共和國US=美利堅合眾國, RU=俄羅斯聯邦, C

16、N=中華人民共和國Map接口3-3nMap接口常用方法方法名說 明Object put(Object key, Object val)以“鍵-值對”的方式進行存儲Object get (Object key)根據鍵返回相關聯的值,如果不存在指定的鍵,返回nullObject remove (Object key)刪除由指定的鍵映射的“鍵-值對”int size()返回元素個數Set keySet ()返回鍵的集合Collection values ()返回值的集合boolean containsKey (Object key)如果存在由指定的鍵映射的“鍵-值對”,返回true迭代器Iterat

17、or2-1n如何遍歷List集合呢?n方法1:通過for循環和get()方法配合實現遍歷n方法2:通過迭代器Iterator實現遍歷 n所有集合接口和類都沒有提供相應遍歷方法,而是由Iterator實現集合遍歷nCollection 接口的iterate()方法返回一個Iterator,然后通過Iterator接口的兩個方法可實現遍歷nboolean hasNext(): 判斷是否存在另一個可訪問的元素 nObject next(): 返回要訪問的下一個元素迭代器Iterator2-2public class Test5 public static void main(String args)

18、 / 1、創建多個狗狗對象、創建多個狗狗對象Dog ououDog = new Dog(歐歐歐歐, 雪娜瑞雪娜瑞);/ 2、創建、創建ArrayList集合對象并把多個狗狗對象放入其中集合對象并把多個狗狗對象放入其中List dogs = new ArrayList ();dogs.add(ououDog);System.out.println(使用使用Iterator遍歷,所有狗狗昵稱和品種是遍歷,所有狗狗昵稱和品種是:);Iterator it = dogs.iterator();while (it.hasNext() Dog dog = (Dog) it.next();System.ou

19、t.println(dog.getName()+t+dog.getStrain();通過迭代器依次輸出所通過迭代器依次輸出所有狗狗的信息有狗狗的信息演示示例:使用演示示例:使用Iterator遍歷集合遍歷集合泛型集合3-1n把任何類型對象通過add(Object obj) 放入List中,認為只是Object類型n通過get(int index) 取出List中元素時必須進行強制類型轉換,繁瑣而且容易出現異常n使用Map的put(Object key, Object value)和get (Object key)存取對象時存在同樣問題n使用Iterator的next()方法獲取元素時存在同樣問

20、題nJDK5.0中通過引入泛型有效的解決了這個問題nJDK5.0使用泛型改寫了集合框架中的所有接口和類泛型集合3-2public class Test6 public static void main(String args) / 1、創建多個狗狗對象、創建多個狗狗對象Dog dog1 = new Dog(歐歐歐歐, 雪娜瑞雪娜瑞);/ 2、創建、創建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、使用、使用Iterator遍歷遍歷dogs對象對象System.out.println(n所有狗狗的信息如下:所有狗狗的信息如下:);Iterator it = dogs.iterator();while (it.hasNext() dog = it.next();System.out.println(dog.getName() + t +

溫馨提示

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

評論

0/150

提交評論