Presentation is loading. Please wait.

Presentation is loading. Please wait.

Ch13 集合與泛型 物件導向程式設計(2).

Similar presentations


Presentation on theme: "Ch13 集合與泛型 物件導向程式設計(2)."— Presentation transcript:

1 Ch13 集合與泛型 物件導向程式設計(2)

2 大綱 集合與陣列 集合(collection) Map Set List: ArrayList, Vector, LinkedList
Queue: LinkedList, PriorityQueue Map HashMap

3 集合與陣列 集合 陣列 空間大小 建立時不必指定集合大小 無論存入或移除元素,集合會動態調整空間大小以符合需求
建立時必須指定陣列大小,且無法改變 元素存取時不可超過索引上限,否則會產生OutOfBoundsException 資料類型 可存放任何物件 基本資料類型會自動轉型成對應的物件再存入集合中 放入的物件要搭配泛型,否則會自動轉型成Object 可存放物件或基本資料類型,但必須符合陣列所宣告的資料型態 資料存取 可使用 for-each Iterator物件功能 可使用: for迴圈並搭配索引

4 集合架構圖 Collection Set SortedSet TreeSet HashSet List ArrayList Vector
LinkedList Queue PriorityQueue

5 Collection介面 常用方法 方法名 功能 boolean add(E ob)
新增物件ob至集合內,新增成功則回傳true,反之為false boolean clear() 將集合內所有元素清空 boolean isEmpty() 檢查集合是不是空的 Iterator iterator() 取得Iterator物件,可透過Iterator方法來走訪集合內所有元素 boolean remove(Object obj) 將指定的元素從集合內移除 int size() 回傳集合內的元素總數 Object [] toArray() 將集合內元素轉存到陣列

6 泛型 class Book<T> { private T price;
public void setPrice(<T> price){ this.price = price; } public <T> getPrice() { return price; //將<T>全被取代為Integer Book<Integer> book1 = new Book<Integer>(); book1.setPrice(580); //將<T>取代成String Book<String> book2 = new Book<String>(); book2.setPrice(“五百八十”); //任何資料型態都可以,但會全變成Object Book book3 = new Book(); book3.setPrice(380.0); 可以使得price可以在使用時才指定資料型態,而且不用宣告多個變數但是代表同一個意義

7 泛型應用在集合上 集合搭配泛型的功能,就可以像陣列一樣限制元素的資料類型 集合內元素取出後,也會與當初限制的資料類型相同
Collection<T> c = new Set<T>();

8 Set集合 Set集合內各個元素值不會重複 Set集合內的元素沒有一定的存放順序 HashSet是Set的子類別,所以有相同的特色
SortedSet與Set集合相同,元素值不可重複 SortedSet集合內的元素會做升冪排序

9 List、ArrayList、LinkedList集合
元素存放順序與新增的順序相同 使用索引,和陣列相同,都使用索引 元素值可重複

10 List、ArrayList、LinkedList集合的方法
方法名 功能 void add(int index, E element) 將指定物件插入指定索引上 E get(int index) 取得指定索引的元素 E set(int index, E element) 將索引上的元素用element取代

11 Queqe PriorityQueue LinkedList

12 Queqe PriorityQueue LinkedList方法
方法名 功能 boolean offer(E o) 將指定物件新增至集合內 E peek() 取得第一順位的元素值,但不會移除該元素 E poll() 取得第一順位的元素值,並同時移除該元素

13 各種集合的特色 集合名稱 元素值不重複 元素有排序性 元素有順序性 使用索引 先進先出 Set  HashSet SortedSet
TreeSet List ArrayList LinkedList Queue PriorityQueue

14 Map Map不是Collection,可是可以轉成集合,所以也被歸類為集合
使用List或陣列時,透過索引來存取元素,索引從0開始;Map有鍵值組,每一資料含有鍵和一個對應值 Map的鍵如同索引,所以不可以重覆

15 Map方法 方法名 功能 void clear() 清空Map內所有的鍵值組 V get(Object key) 依鍵取得對應的值
boolean isEmpty() 檢查Map是不是空的容器 Set<K> keySet() 將Map內部的鍵轉存成Set物件 V put(K key, V value) 將指定的鍵值組存放至Map內 V remove(Object key) 依照指定的鍵移除對應的鍵值組 int size() 回傳Map內的鍵值組的總數 Collection <V> values() 將Map內部的值轉存成Collection集合

16 HashMap SortedMap HashMap 鍵不重複 鍵無順序性,沒有一定的存放順序 SortedMap 鍵具有排序性


Download ppt "Ch13 集合與泛型 物件導向程式設計(2)."

Similar presentations


Ads by Google