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() という名前の関数を作成しました。この関数内では、イテレータのすべての関数をオーバーライドできます。

main 関数では、リストを作成し、そこからカスタムイテレータを取得して、temp に格納するだけです。これが、Java でカスタムイテレータを作成する方法です。オーバーライド中は変更を加えていませんが、この方法を使用してイテレータを自由にカスタマイズできます。