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 中制作自定义迭代器的方式。我们在覆盖时没有做任何更改,但是你可以使用这种方式根据需要自定义迭代器。