迭代器的代码实现与迭代器的实现原理

 迭代器的代码实现

package Collection_Demo01;

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

/*
java.util.Iterator接口:迭代器(对集合进行遍历)有两个常用的方法
boolean hasNext()如果仍有元素可以迭代,则返回true。
判断集合中还有没有下一个元素,有就返回true,没有就返回falseE next()返回迭代的下一个元素。
取出集合中的下一个元素
Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊collection接口中有一个方法,叫iterator (),这个方法返回的就是迭代器的实现类对象
Iterator<E> iterator()返回在此collection 的元素上进行迭代的迭代器。
迭代器的使用步骤(重点)∶
1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
2.使用Iterator接口中的方法hasNext判断还有没有下一个元素
3.使用Iterator接口中的方法next取出集合中的下一个元素
 */
public class Demo02_Collection {
    public static void main(String[] args) {
        //创建一个集合
        Collection<String> coll = new ArrayList<>();
        //往集合中添加元素
        coll.add("李佳航");
        coll.add("李晟");
        coll.add("张伟");
        coll.add("诸葛大力");
        coll.add("胡强");
        coll.add("欧阳莫非");

        /*
        1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)注意:
        Iterator<E>接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型
         */
        //多态   接口      实现对象
        Iterator<String> iterator = coll.iterator();

        /*
        发现使用迭代器取出集合中元素的代码,是一个重复的过程所以我们可以使用循环优化
        不知道集合中有多少元素,使用whiLe循环循环结束的条件, hasNext方法返回false
         */
        while (iterator.hasNext()){
           String  e = iterator.next();
            System.out.println(e);
        }
        System.out.println("*********************");
        for (Iterator<String> iterator1 = coll.iterator();iterator1.hasNext();){
            String next = iterator1.next();
            System.out.println(next);
        }
//
//        //2.使用iterator接口中的方法hanNext判断没有下一个元素
//        boolean b = iterator.hasNext();
//        System.out.println(b);
//        ///3.使用Iterator接口中的方法next取出集合中的下一个元素
//        String next = iterator.next();
//        System.out.println(next);
//
//        b = iterator.hasNext();
//        System.out.println(b);
//        next = iterator.next();
//        System.out.println(next);
//
//        b = iterator.hasNext();
//        System.out.println(b);
//        next = iterator.next();
//        System.out.println(next);
//
//        b = iterator.hasNext();
//        System.out.println(b);
//        next = iterator.next();
//        System.out.println(next);
//
//        b = iterator.hasNext();
//        System.out.println(b);
//        next = iterator.next();
//        System.out.println(next);
//
//        b = iterator.hasNext();
//        System.out.println(b);
//        next = iterator.next();
//        System.out.println(next);
//
//        b = iterator.hasNext();
//        System.out.println(b);    //没有元素,返回false
//        next = iterator.next(); //没有元素,在取出元素会抛出NoSuchELementException没有元素异常
//        System.out.println(next);



    }
}

迭代器的实现原理

 

posted @ 2022-07-06 10:23  zj勇敢飞,xx永相随  阅读(95)  评论(0编辑  收藏  举报