迭代器Iterator

Posted buildingdream-996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器Iterator相关的知识,希望对你有一定的参考价值。

迭代器java.util.Iterator public interface Iterator<E>

方法

  • 常用boolean hasNext() 如果迭代具有更多的元素,则返回true 。 (换句话说,如果next()返回一个元素而不是抛出一个异常,则返回true )
  • 常用E next()   返回迭代中的(取出集合)下一个元素。

        NoSuchElementException - 如果迭代没有更多的元素

  • default void remove()  从底层集合中删除此迭代器返回的最后一个元素(可选操作)。 此方法只能调用一次next() 。 如果底层集合在迭代过程中以任何方式进行修改而不是通过调用此方法,则迭代器的行为是未指定的。

        UnsupportedOperationException -如果 remove操作不会被这个迭代器支持
        IllegalStateException - 如果 next方法尚未被调用,或者 remove方法在上次调用 next方法之后已经被调用

  • default void forEachRemaining(Consumer<? super E> action)对每个剩余元素执行给定的操作,直到所有元素都被处理或动作引发异常。 如果指定了该顺序,则按迭代的顺序执行操作。 动作抛出的异常被转发给呼叫者。

        NullPointerException - 如果指定的动作为空

使用方法

public class StudyIterator {

    public static void main(String[] args) {
        
        //创建一个集合,添加元素
        Collection<String> collect = new ArrayList<String>();
        for (int i = 0; i < 10; i++) {
            String string = String.valueOf(i);
            collect.add(string);
        }
        
        /*
         * 迭代器使用方法:
         * 1.使用集合中iterator()方法获取迭代器的实现类对象,使用Iterator接口接受(多态)
         * 注意: Iterator<E>接口也是泛型,迭代器的泛型跟着集合走,集合什么类型,迭代器就是什么类型
         * 2.使用Iterator接口中方法hasNext()判断是否有下一个元素
         * 3.使用Iterator接口中方法next()取出集合的下一个元素
         * */
        Iterator<String> it = collect.iterator();  //步骤1
        while (it.hasNext()) {                      //步骤2
            System.out.print(it.next()+"|");        //步骤3
        }
        System.out.println();
        
        //for循环也可以实现,相对代码复杂
        for (Iterator<String> it2 = collect.iterator(); it2.hasNext(); ) {
            System.out.print(it2.next()+"|");
        }
        
    }
    
}

输出结果

0|1|2|3|4|5|6|7|8|9|
0|1|2|3|4|5|6|7|8|9|



以上是关于迭代器Iterator的主要内容,如果未能解决你的问题,请参考以下文章

Java迭代器Iterator

Iterator(迭代器)

迭代器模式(Iterator Pattern)

迭代器模式-Iterator

STL之迭代器(iterator)

迭代器模式(Iterator Pattern)