设计模式-迭代器

迭代器设计模式提供了一个能够顺序访问内部元素而不暴漏内部结构的遍历方法.

应用场景:1访问集合 而不想暴露内部结构时使用;

比如forEach就是一个简单的迭代器

2.对同一个集合,想要用多种遍历方式来遍历时使用迭代器:

因为迭代器内部会有一个Collertion<T> 来拷贝一份相同的集合,所以迭代器的遍历行为不会对原来的集合造成影响

3:迭代器的遍历开始时,不影响对原来的集合做读写操作

在多线程环境中,迭代器可以提供一种线程安全的方式来遍历聚合对象。

4.简化代码

使用迭代器可以简化代码,特别是在处理复杂的数据结构时,迭代器可以隐藏遍历的复杂性。

应用场景 1 ,3,4 是利用了迭代器的特点,要完成第2个应用场景需要能够自定义迭代器,只需要自定义一个迭代器类来实现Interator接口,覆写hasNext()方法和next()方法

复制代码
public class CustomIterator<T> implements Iterator<T> {
    private final T[] collection;
    private int position = 0;

    public CustomIterator(T[] collection) {
        this.collection = collection;
    }

    @Override
    public boolean hasNext() {
        return position < collection.length;
    }

    @Override
    public T next() {
        if (!hasNext()) {
            throw new NoSuchElementException();
        }
        return collection[position++];
    }

    @Override
    public void remove() {
        if (position <= 0) {
            throw new IllegalStateException("Cannot remove from this position");
        }
        // 实现删除逻辑
    }
}
相关推荐
海特伟业2 小时前
隧道调频广播覆盖-隧道调频广播无线覆盖系统建设要点、难点分析与解决应对
运维·设计模式
sg_knight2 小时前
设计模式实战:享元模式(Flyweight)
python·设计模式·享元模式·flyweight
Swift社区4 小时前
AI 时代,ArkUI 的设计模式会改变吗?
人工智能·设计模式
数据中穿行4 小时前
访问者设计模式全方位深度解析
设计模式
宁雨桥5 小时前
前端设计模式面试题大全
前端·设计模式
数据中穿行6 小时前
迭代器设计模式全方位深度解析
设计模式
数据中穿行6 小时前
观察者设计模式全方位深度解析
设计模式
程序员Terry7 小时前
别老写重复代码了!模版方法模式一次讲透
java·设计模式
数据中穿行7 小时前
建造者模式全方位深度解析
设计模式
数据中穿行7 小时前
组合设计模式全方位深度解析
设计模式