迭代器模式

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;
       }        
    }
}