Collections集合物件.ppt_第1页
Collections集合物件.ppt_第2页
Collections集合物件.ppt_第3页
Collections集合物件.ppt_第4页
Collections集合物件.ppt_第5页
已阅读5页,还剩46页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第17章 Java Collections集合物件,17-1 集合物件的基礎 17-2 實作Set介面的集合類別 17-3 實作List介面的集合類別 17-4 實作Map介面的集合類別 17-5 輸出Collections物件的元素,17-1-1 Java Collections Framework 17-1-2 集合介面 17-1-3 泛型Java的集合物件,17-1 集合物件的基礎,17-1-1 Java Collections Framework-說明,集合物件(Collections)是指一組相關的物件集合,將這組物件集合視為單一物件,在集合物件中的物件稱為元素(Elements),

2、集合物件有很多種,其儲存的元素可能允許重複,有些集合物件的元素會進行排序,在舊版Java技術是指Vector和Hashtable物件。,17-1-1 Java Collections Framework-架構1,JDK 1.2之後的版本提供全新的集合物件架構,稱為Java Collections Framework,這是用來儲存和處理集合物件的統一軟體架構,其組成如下所示: 集合介面(Collection Interface):一組定義完善的Java介面,提供處理集合物件的標準介面,其目的是讓集合物件擁有一致的操作方式,包含:Collection、Set、SortedSet、List、Map和

3、SortedMap介面。,17-1-1 Java Collections Framework-架構2,實作(Implementations):實作集合介面的類別,稱為具體類別(Concrete Class),對比抽象類別,這是可以使用new運算子建立實例的類別,以實作的集合介面來區分,常用的介面如下表所示:,17-1-1 Java Collections Framework-架構3,演算法(Algorithms):當物件實作集合介面,其實作的一些多形方法,可以執行集合物件元素的搜尋與排序等演算法。,17-1-2 集合介面-說明,集合介面(Collection Interface)是用來處理集合

4、物件中儲存的物件,提供一致的物件操作方式來新增、刪除和搜尋元素的方法,這是一個介面型態的類別架構,其根介面是:Collection和Map介面。,17-1-2 集合介面-Collection集合介面(圖例),Collection介面的擁有Set和List子介面,Set介面擁有SortedSet子介面,介面的繼承架構,如右圖所示:,17-1-2 集合介面-Collection集合介面(介面說明),Collection介面:類別架構的根介面,不過並沒有任何類別直接實作Collection介面,Java Collections Framework的具體類別(Concrete Class)都是實作其子

5、介面。 Set介面:實作Set介面的集合物件,其儲存元素沒有重複元素。 List介面:實作List介面的集合物件可以擁有重複元素,元素是以循序方式存入,可以使用類似陣列索引方式來存取元素。 SortedSet介面:Set介面的子介面,實作SortedSet介面的集合物件,其儲存元素不只沒有重複,而且是從小到大進行排序。,17-1-2 集合介面- Map集合介面(圖例),Map介面並不是Collection介面的子介面,Map介面是一種特殊的Set介面,儲存的資料是一組對應元素,擁有子介面SortedMap,介面繼承架構,如右圖所示:,17-1-2 集合介面- Map集合介面(介面說明),Map

6、介面:實作Map介面的集合物件並沒有重複元素,儲存的元素是一對:鍵值(Key)和值(Value),這是一種單方向的對應,鍵值可以對應其值,例如:網域名稱對應IP位址。 SortedMap介面:對應SortedSet介面的Map介面子介面,實作SortedMap介面的集合物件,其儲存元素沒有重複,而且是以鍵值由小到大進行排序。,17-1-3 泛型Java的集合物件-說明,泛型Java(Generic Java)是JDK 5.0版在Java語法上的重大變革,提供類似C+語言的樣版(Templates)語法,新增編譯階段的集合物件型態檢查功能,可以減少程式碼中取出元素所需的大量型態轉換。,17-1-

7、3 泛型Java的集合物件-泛型型態,泛型Java可以使用泛型型態(Generic Types)來擴充Java語言,簡單的說,就是在建立集合物件時,以泛型型態指定集合物件儲存元素的資料型態,如下所示: HashSet hset = new HashSet(); HashSet hset = new HashSet(); HashSet hset = new HashSet(); 使用”括起資料型態就是泛型型態,它是用來指定集合物件儲存元素的資料型態。,17-2 實作Set介面的集合類別,17-2-1 Set介面的基礎 17-2-2 HashSet類別 實作Set介面 17-2-3 TreeSe

8、t類別 實作SortedSet介面,17-2 實作Set介面的集合類別,Set介面是Collection介面的子介面,實作Set介面的集合物件,其儲存元素並沒有重複,如果是實作子介面SortedSet的集合物件,儲存的就是排序元素。,17-2-1 Set介面的基礎-說明,Set介面繼承Collection介面的所有方法,只是規範建構子和某些方法,以滿足其儲存元素不能重複。 Set介面方法(也是Collection介面方法),E是泛型型態,如下表所示:,17-2-1 Set介面的基礎-介面方法,17-2-2 HashSet類別 實作Set介面(說明),HashSet類別實作Set介面,繼承Col

9、lection介面的方法,使用雜湊表(Hash Table)演算法來改進新增、刪除和存取集合物件元素的執行效率,其儲存元素的排列和插入順序不同,也不保證擁有固定的排列順序。,17-2-2 HashSet類別 實作Set介面(建立物件),HashSet類別提供數種過載建構子,在Java程式建立HashSet物件(5.0版),如下所示: HashSet hset = new HashSet(); 上述程式碼建立儲存字串元素的HashSet物件,泛型型態為String。,17-2-2 HashSet類別 實作Set介面(建構子),過載建構子的說明,如下表所示:,17-2-3 TreeSet類別 實作

10、SortedSet介面(說明),TreeSet類別實作SortedSet介面,這是Set介面的子介面,其儲存元素不只沒有重複,而且由小到大進行排序,這是一種排序集合物件(Sorted Collection)。,17-2-3 TreeSet類別 實作SortedSet介面(建立物件),TreeSet類別提供數種過載建構子,在Java程式建立TreeSet物件(5.0版),如下所示: TreeSet tset = new TreeSet(); 上述程式碼建立儲存字串元素的TreeSet物件。,17-2-3 TreeSet類別 實作SortedSet介面(建構子),過載建構子的說明,如下表所示:,1

11、7-2-3 TreeSet類別 實作SortedSet介面(建構子),TreeSet類別實作SortedSet介面,除了繼承Set介面的方法外,其新增的介面方法,如下表所示:,17-3 實作List介面的集合類別,17-3-1 List介面的基礎 17-3-2 ArrayList類別 17-3-3 LinkedList類別,17-3-1 List介面的基礎-說明,List介面也是繼承自Collection介面,實作此介面的集合類別是一種循序集合物件(Ordered Collection),允許元素重複,元素擁有索引位置,可以使用類似陣列索引方式來存取元素。 循序集合物件(Ordered Col

12、lection)和排序集合物件(Sorted Collection)不同,循序集合物件如同陣列是指以元素位置的索引來排列,排序集合物件是以元素值的大小進行排列。,17-3-1 List介面的基礎-介面方法,17-3-2 ArrayList類別-說明,ArrayList類別實作List介面,儲存元素的方式類似陣列,元素使用索引位置依序存入,只需將元素新增或插入ArrayList物件,並不用事先宣告物件的尺寸,如同一個可調整陣列尺寸的動態陣列。,17-3-2 ArrayList類別-建立物件,在Java程式建立ArrayList物件(5.0版),如下所示: ArrayList alist = ne

13、w ArrayList(); 上述程式碼使用建構子建立ArrayList物件儲存字串元素,泛型型態是String。,17-3-2 ArrayList類別-建構子,過載建構子的說明,如下表所示:,17-3-2 ArrayList類別-方法,ArrayList物件除了實作List介面的方法外,還新增一些方法,其說明如下表所示:,17-3-2 ArrayList類別-範例,在新增ArrayList物件的元素後,Java程式可以使用for迴圈配合索引取得每一個物件元素,如下所示: for ( int i = 0; i alist.size(); i+ ) System.out.print(alist.

14、get(i)+ ); 程式碼使用size()方法取得元素數,get()方法配合索引位置取出ArrayList物件的元素。,17-3-3 LinkedList類別-說明,LinkedList類別是實作List介面,這是類似鏈結串列(Linked Lists)資料結構的類別,各節點如同火車掛車廂一般,將每一個車廂的節點連結起來,如下圖所示:,17-3-3 LinkedList類別-建構子,LinkedList類別提供方法可以在串列的頭和尾取出和刪除元素,在Java程式只需使用建構子就可建立LinkedList物件,過載建構子的說明,如下表所示:,17-3-3 LinkedList類別-方法,Lin

15、kedList物件除了實作List介面的方法外,新增方法的說明,如下表所示:,17-4 實作Map介面的集合類別,17-4-1 Map介面的基礎 17-4-2 HashMap類別 實作Map介面 17-4-3 TreeMap類別 實作SortedMap介面,17-4-1 Map介面的基礎-說明,Map介面是類別架構的根介面,擁有子介面SortedMap介面,實作Map介面的集合類別,其儲存物件一共有2個:鍵值(Key)和對應值(Value)的物件,其中鍵值不可重複,一個鍵值對應一個值。,17-4-1 Map介面的基礎-介面方法,17-4-2 HashMap類別 實作Map介面(說明),Hash

16、Map類別實作Map介面,相當於是舊版的Hashtable類別,其儲存元素有2個:key鍵值和其對應值,允許儲存null值。 HashMap類別提供數種過載的建構子,在Java程式建立HashMap物件(5.0版),如下所示: HashMap hmap = new HashMap(); 上述程式碼建立HashMap物件,因為儲存元素有鍵值和對應值,所以指定2個泛型型態。,17-4-2 HashMap類別 實作Map介面(建構子),過載建構子的說明,如下表所示:,17-4-3 TreeMap類別 實作SortedMap介面(說明),TreeMap類別實作SortedMap介面,SortedMap

17、介面是Map介面的子介面,實作此介面的集合物件是以鍵值由小到大進行排序。在Java程式建立TreeMap物件(5.0版),如下所示: TreeMap tmap = new TreeMap(); 上述程式碼建立TreeMap物件,元素都為字串String資料型態。,17-4-3 TreeMap類別 實作SortedMap介面(建構子),過載建構子的說明,如下表所示:,17-4-3 TreeMap類別 實作SortedMap介面(方法),TreeMap類別實作SortedMap介面,除了繼承Map介面的方法外,其新增的介面方法,如下表所示:,17-5 輸出Collections物件的元素,17-5

18、-1 Iterator介面輸出元素 17-5-2 ListIterator介面輸出元素,17-5-1 Iterator介面輸出元素-說明,Iterator介面改進舊版Java技術的Enumeration介面,提供一致方法來走訪集合物件的元素或刪除元素,因為Collections集合物件已經實作Iterator介面,換句話說,只需使用Collection、Set和List介面的iterator()方法,就可以取得Iterator介面的物件,如下表所示:,17-5-1 Iterator介面輸出元素-範例,例如:HashSet物件hset可以使用上表方法取得Iterator介面物件,如下所示: Iterator iterator = hset.iterator(); 上述程式碼是將HashSet物件的元素轉換成Iterator介面物件,泛型型態為String,現在我們只需呼叫介面方法,就可以依序走訪和刪除元素。,17-5-1 Iterator介面輸出元素-介面方法,在取得Iterato

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论