1. 程式人生 > 實用技巧 >Iterator(迭代器)、增強for迴圈

Iterator(迭代器)、增強for迴圈

Iterator(迭代器)

java.util.Iterator介面:迭代器(對集合進行遍歷)

有兩個常用方法:

boolean hasNext();//判斷集合中是否有下一個元素,有true,無false
E next();//返回迭代後的下一個元素

Iterator迭代器,是一個藉口,我們無法直接使用,需要使用Iterator介面的實現類物件,獲取實現類的方式比較特殊,Collection介面有一個方法,叫

Iterator<E> iterator();

可以返回在此Collection的元素上進行迭代的迭代器

迭代器的使用步驟:

1.使用集合中的方法iterator(),獲取迭代器的實現類,使用Iterator介面接收(多型)

2.使用Iterator介面中的方法hasNext(),判斷是否有下一個元素

3.使用Iterator介面中的方法next(),取出集合的下一個元素

package commonclass;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class TestIterator01 {
    public static void main(String[] args) {
        Collection<String> arrayList = new ArrayList<>();
        arrayList.add("張三");
        arrayList.add("李四");
        arrayList.add("王五");
        arrayList.add("趙六");
        arrayList.add("田七");

        Iterator<String> iterator = arrayList.iterator();
        while (iterator.hasNext()){
            System.out.print(iterator.next()+"\t");
        }
    }
}

迭代器的實現原理:

增強for迴圈:底層使用的也是迭代器, 使用for迴圈的格式,簡化了迭代器的書寫

是JDK1.5之後出現的新特性

public interface Collection<E> extends Iterable<E>//所有的單列集合都可以使用增強for迴圈
public interface Iterable<T>//實現此介面允許一個物件是“for-each迴圈”語句的目標

增強for迴圈:用來遍歷集合和陣列

格式 :

for(集合/陣列的資料型別 變數名 :集合名/陣列名){

sout(變數名);

}

package commonclass;

import java.util.ArrayList;
import java.util.Collection;

public class TestFor_Each01 {
    public static void main(String[] args) {
        int[]  arrays = {1,2,3,4,5};
        for (int array : arrays) {
            System.out.print(array+"\t");
        }

        Collection<String> arrayList = new ArrayList<>();
        arrayList.add("張三");
        arrayList.add("李四");
        arrayList.add("王五");
        arrayList.add("趙六");
        arrayList.add("田七");

        for (String s : arrayList) {
            System.out.print(s+"\t");
        }
    }
}