HOWTO · Java

Java 中的自定義迭代器

如何在 Java 中建立自定義迭代器

在本指南中,我們將學習如何在 Java 中建立自定義迭代器。Java 中的迭代器是一個非常有用的工具。你可以將其視為 foreach 迴圈的替代方案。迭代器具有一些幫助開發人員更新定義良好的集合的功能。讓我們看看如何在 Java 中建立自定義迭代器。

瞭解有關 Java 中迭代器的更多資訊此處

Java 中的自定義迭代器

Java 中的自定義迭代器可以幫助開發人員解決具有一些複雜資料結構的問題。基本上,你採用一個實現迭代器的類並覆蓋其方面。例如,你可以使用自己的指令(如 hasNext()next()remove())覆蓋其功能。看看下面的程式碼。

import java.util.Iterator; // Iterator Import
class CustomList<Type> implements Iterable<Type> {
  private Type[] arrayList;
  private int Size;
  public CustomList(Type[] newArray) { // Constructor Which Accepts Array...
    this.arrayList = newArray;
    this.Size = arrayList.length;
  }
  @Override
  public Iterator<Type> iterator() {
    // OverRiding Default List Iterator //
    Iterator<Type> it = new Iterator<Type>() {
      private int currentIndex = 0;
      @Override
      public boolean hasNext() {
        // OverRiding Default hasNext  Method//
        return currentIndex < Size && arrayList[currentIndex] != null;
      }
      @Override
      public Type next() {
        // OverRiding Default next  Method//
        return arrayList[currentIndex++];
      }
      @Override
      public void remove() {
        // OverRiding Default Remove  Method.
        throw new UnsupportedOperationException();
      }
    };
    return it;
  }
}
public class Main {
  public static void main(String args[]) {
    String[] data = new String[] {"Tim Cook", "Mark Zuckerberg", "Elon Musk", "Jeff Bezos"};
    CustomList<String> Listt = new CustomList<String>(data);
    // creating a CustomList Object Which OverRides.
    // The Iterator and Use The Custom Iterator Which is Defined in The Code.
    Iterator temp = Listt.iterator(); // getting Custom iterator from List.
    while (temp.hasNext()) { // custom hasNext() Method
      String value = temp.next().toString(); // Custom Method Return The Current Index
      System.out.print(value + ", ");
    }
  }
}

輸出:

Tim Cook, Mark Zuckerberg, Elon Musk, Jeff Bezos,

在上面的程式碼示例中,我們正在用 Java 製作自定義迭代器。首先,我們建立了一個 ArrayList 並給它一個 size。使用建構函式,我們為這兩個變數賦值。我們在 Iterator<Type> 中建立了一個名為 iterator() 的函式。在這個函式中,一個 iterator 中的所有函式都可以被覆蓋。

在 main 函式中,我們只是製作一個列表,從中獲取自定義迭代器,並將其儲存在 temp 中。這就是我們在 Java 中製作自定義迭代器的方式。我們在覆蓋時沒有做任何更改,但是你可以使用這種方式根據需要自定義迭代器。