迭代器模式

StackOverflow 文档

集合是软件工程中最常用的数据结构之一。集合只是一组对象。集合可以是 List,数组,映射,树或任何东西。因此,集合应该提供一些访问其元素的方法,而不会暴露其内部结构。无论收集的类型如何,我们都应该能够以相同的方式遍历它。

迭代器模式的想法是负责访问集合的对象并将其放在迭代器对象中。返回的迭代器对象将保持迭代的顺序,保持对当前项的跟踪,并且必须有一种方法来获取下一个元素。

通常,集合类包含两个组件:类本身,它是 Iterator

public interface Iterator {
   public boolean hasNext();
   public Object next();
}

public class FruitsList {
    public String fruits[] = {"Banana", "Apple", "Pear", "Peach", "Blueberry"};

    public Iterator getIterator() {
       return new FruitIterator();
    }

    private class FruitIterator implements Iterator {
       int index;

       @Override
       public boolean hasNext() {
           return index < fruits.length;
       }

       @Override
       public Object next() {
   
          if(this.hasNext()) {
            return names[index++];
          }
          return null;
       }        
    }
}