凡是有實作java.lang.Iterable介面的類別,或是繼承java.lang.Iterable介面的介面,都具有iterator()方法,可用iterator取值。Set介面與List介面都有繼承java.lang.Iterable,可以使用iterator取值。 以下以Set介面為例,介紹使用iterator取出集合內所有的值的方法。

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class setPractice {
   public static void main(String args[]){
                /*
                 * 宣告型態為Set,實體為HashSet的變數
                 * setTest,限制只能加 入String型態                         
                 * 的資料到setTest中
                 */
                Set setTest = new HashSet();
                /* 
                 * 宣告Iterator型態的變數 it,
                 * 限制只能將String型態加入it 
                 */ 
                Iterator it; 
                setTest.add("apple"); //apple加入setTest
                setTest.add("banana");//banana加入setTest
                setTest.add("tomato");//tomato加入setTest
               /* setTest呼叫iterator()方法,回傳Iterator型態的物件,
                * 該物件包含所有setTest內所存放的值,
                * 將該物件存入it
                */
                it = setTest.iterator(); 
                /*
                 * hasNext()為使用游標走訪Iterator物件,檢查下一筆元素是包含物件,
                 * 有包含物件則傳回true,否則false。
                 * 游標的起始位置在Iterator第一筆元素之前,所以第一次執行hasNext(),
                 * 會檢查Iterator的第一筆元素,使用此方式可以走訪Iterator內的所有物件
                 */
                 while (it.hasNext()) {   
                /*
                 * next()為使用游標走訪Iterator,取出下一筆的值。
                 * 游標的起始位置在Iterator第一筆之前,所以第一次執行next(),會
                 * 取出Iterator的第一筆資料
                 */
                 System.out.println(it.next());
  }
 }
}
 
執行結果:banana
 
        tomato
        apple

綜合以上的介紹,我們整理使用iterator取出集合內所有的值的方法:

 
1. 該集合類別/介面需要有iterator方法(透過實作/繼承java.lang.Iterable而來)

2. 呼叫iterator方法,取得Iterator型態的物件,該物件包含集合內所有的值 3. 使用while迴圈,迴圈的條件式內使用Iterator型態的物件呼叫hasNext(),迴圈會走訪Iterator的所    有元素。在while迴圈區塊內使用next(),每次執行回圈,就將走訪到的元素值取出。迴圈全部執行完畢    後,所有的值即取出完畢。

 

其它文章

文章標籤
全站熱搜
創作者介紹
創作者 PG Levin Li 的頭像
PG Levin Li

程式開發學習之路

PG Levin Li 發表在 痞客邦 留言(0) 人氣(643)