close

凡是有實作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(),每次執行回圈,就將走訪到的元素值取出。迴圈全部執行完畢
   後,所有的值即取出完畢。


 














其它文章

arrow
arrow
    文章標籤
    java iterator 集合 util
    全站熱搜

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