[Java][概念][集合]集合概念-Iterator

集合物件:

  • 集合物件是指一群相關聯的資料,集合在一起組成一個物件
  • 集合物件裡的資料,稱為元素

集合物件分類:

  1. Collection介面:可以持有各自獨立的物件
    • Set:無特定順序,不准許重複,HashSet Class實作了Set介面
    • List:有特定順序,准許重複,ArrayList類別實作了List介面
  2. 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取值有幾總方法

  1. Iterator取值
  2. for迴圈加get()取值(Set家族不能用)
  3. Enumeration取值
  4. 用toArray轉陣列後取值
  5. 加強式for迴圈取值

具老師的說法迭代器都在Collection裡面暫時統一了紛亂的場面,是曹操。