Java集合Iterator迭代器

什么是迭代器?

在Java中,有很多的数据容器,对于这些的操作有很多的共性。Java采用了迭代器来为各种容器提供了公共的操作接口(各个容器实现Iterable接口)。这样使得对容器的遍历操作与其具体的底层实现相隔离,达到解耦的效果。

Iterator在1.8中加入了forEachRemaining(Consumer action):使用Lambda表达式来遍历集合元素。

迭代器Iterator接口中三个常用的方法:

迭代器使用

public static void main(String[] args) {
        List<String> list=new ArrayList<>();
        list.add("111");
        list.add("222");
        list.add("333");
        for(Iterator<String> it=list.iterator();it.hasNext();)
        {
            System.out.println(it.next());
        }
}

打印结果:

111
222
333

我们来看一个Iterator的实现类

public class ArrayIterator implements Iterator<Object> {
    private final Object array;
    private int currentIndex = 0;
    
    public ArrayIterator(Object array) {
        if (!array.getClass().isArray()) {
            throw new IllegalArgumentException("not an array");
        }
        this.array = array;
    }
    
    @Override
    public boolean hasNext() {
        return currentIndex < Array.getLength(array);
    }

    @Override
    public Object next() {
        return Array.get(array, currentIndex++);
    }
    
    @Override
    public void remove() {
        throw new UnsupportedOperationException("cannot remove items from an array");
    }
}

hasNext()方法比较了数组容器的长度和当前位置的大小并返回一个布尔型值。
next()方法先将haxNext()方法中currentIndex位置的值取出,然后将位置向后移动一个。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容