三、行为型模式【迭代器模式】

迭代器模式

public class ArrayIterator<E> implements Iterator<E> {
    
    
    private int cursor;
    private ArrayList<E> arrayList;

    public ArrayIterator(ArrayList<E> arrayList) {
    
    
        this.cursor = 0;
        this.arrayList = arrayList;
    }

    @Override
    public boolean hasNext() {
    
    
        return cursor != arrayList.size(); //注意这里,cursor在指向最后一个元素的时候,hasNext() == true
    }

    @Override
    public void next() {
    
    
        cursor++;
    }

    @Override
    public E currentItem() {
    
    
        if (cursor >= arrayList.size()) {
    
    
            throw new NoSuchElementException();
        }
        return arrayList.get(cursor);
    }
}

一个完整的迭代器模式,一般会涉及容器和容器迭代器两部分内容。为了达到基于接口而非实现编程的目的,容器又包含容器接口、容器实现类,迭代器又包含迭代器接口、迭代器实现类。容器中需要定义 iterator() 方法,用来创建迭代器。迭代器接口中需要定义 hasNext()、currentItem()、next() 三个最基本的方法。容器对象通过依赖注入传递到迭代器类中。

猜你喜欢

转载自blog.csdn.net/weixin_46488959/article/details/126919408
今日推荐