我是靠谱客的博主 潇洒发箍,最近开发中收集的这篇文章主要介绍迭代器Iterator接口的作用及其使用1. 迭代器Iterator的作用2. 迭代器Iterator的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 迭代器Iterator的作用

什么是迭代器
迭代器: 可以被next()函数调用并不断返回下一个值的对象称之为迭代器(Iterator)
从另一种角度来定义迭代器就是:提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。迭代器模式,就是为容器而生

迭代器的作用是什么?
1.Iterator对象称为迭代器(设计模式的一种),主要用于遍历Collection 集合中的元素。
2.迭代是访问集合元素的一种方式,迭代器是一个能够记住遍历位置的对象,迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问完结束,如果想访问一个元素,需要把这个元素前面的所有元素都遍历后,才可以访问
3.Collection集合接口继承了java.lang.Iterable接口,该接口有一个iterator()方法,那么所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象。

注意
Iterator 仅用于遍历集合,Iterator本身并不提供承装对象的能力。如果需要创建Iterator 对象,则必须有一个被迭代的集合。

2. 迭代器Iterator的使用

迭代器的执行原理:(来源于网络图片)
在这里插入图片描述
使用迭代器遍历collection集合元素:(hasNext()和 next()方法)
代码演示:

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

/**
 * 使用迭代器遍历collection集合元素
 * 内部的方法:hasNext()和 next()
 */
public class IteratorTest {

    public void test(){
        Collection c= new ArrayList();
        c.add(123);
        c.add(456);
        c.add(new Cat("Tom",2));
        c.add(new String("Jery"));
        c.add(true);

        Iterator iterator = c.iterator();

        //方式一:
        //在调用it.next()方法之前必须要调用it.hasNext()方法进行检测。若不调用,且下一条记录无效,直接调用it.next()会抛出NoSuchElementException异常。
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        //报异常:NoSuchElementException

//        System.out.println(iterator.next());

        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

Iterator迭代器remove()方法的使用
代码演示:

public class IteratorTest {

    public void test(){
        Collection c= new ArrayList();
        c.add(123);
        c.add(456);
        c.add(new Cat("Tom",2));
        c.add(new String("Jery"));
        c.add(true);

        Iterator iterator = c.iterator();
        while(iterator.hasNext()){
            Object obj = iterator.next();
            if("Jery".equals(obj)){
                iterator.remove();          
            }
        }
        //遍历集合
        iterator = coll.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
  }

Iterator迭代器一般的用法
以ArrayList为例:

 public Iterator<T> iterator() {
        return new Iterator<T>() {
            private int index = -1;

            @Override
            public boolean hasNext() {
                return ++index<size;
            }

            @Override
            public T next() {
                return (T)elementData[index];
            }

            @Override
            public T remove() {
                T t = next();
                ArrayList.this.remove(index);
                index--;
                return t;
            }
        };
    }

总结:

  1. 使用方法**iterator()**要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素;
  2. 使用**hasNext()**检查序列中是否有元素;
  3. 使用**next()**获取序列中下一个元素;
  4. 使用**remove()**将迭代器新返回的元素删除。

最后

以上就是潇洒发箍为你收集整理的迭代器Iterator接口的作用及其使用1. 迭代器Iterator的作用2. 迭代器Iterator的使用的全部内容,希望文章能够帮你解决迭代器Iterator接口的作用及其使用1. 迭代器Iterator的作用2. 迭代器Iterator的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部