集合物件:
- 集合物件是指一群相關聯的資料,集合在一起組成一個物件
- 集合物件裡的資料,稱為元素
集合物件分類:
- Collection介面:可以持有各自獨立的物件
- Set:無特定順序,不准許重複,HashSet Class實作了Set介面
- List:有特定順序,准許重複,ArrayList類別實作了List介面
- Map介面:持有成對的Key-value物件
集合很雜非常雜,在沒有老師領進門之前,根本是瞎子摸象
先從api開始,從api裡可以看到
有一個介面 Iterable在Collection 和Set的頭上,所以Collection 和Set 介面都繼承了 Iterable這個介面,也必須實作Iterable裡唯一的方法Iterator()。
這個介面很新,是為了取代以往JDK1.0 Eumeration而存在的,主要的功能就是來擷取Collection 與子類別List,Set介面的元素
一般會搭配Iterator做取值動作的方法
- public boolean hasNext(): Returns true if this scanner has another token in its input.
hasNext照字義上看就是如果他還有下一個token就回傳true
(如果不了解Token定義可以看下圖:有六大類,簡單來講就是以空白為間格的為一個token)
- public Object next(): Finds and returns the next complete token from this scanner.
next的定義是抓取下一個token然後return String出去
這兩個方法是java.util.Scanner從Iterator<E>實作而來
所以經常Iterator會以下圖的方式去抓取Collection裡的值(Set,List相同方式)
Set set = new Hashset();//new一個Set類別的Hashset物件
.
.
.
.
Iterator objs = set.iterator(); // set用iterator()方法將自己的元素轉為迭代器物件可以開始迭代
while(objs.hasnext())//是否有下一個token有的話回傳true
System.our.print(objs.next)//抓下一個token回傳
一般Collection取值有幾總方法
- Iterator取值
- for迴圈加get()取值(Set家族不能用)
- Enumeration取值
- 用toArray轉陣列後取值
- 加強式for迴圈取值
具老師的說法迭代器都在Collection裡面暫時統一了紛亂的場面,是曹操。