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 でカスタムイテレータを作成する方法です。オーバーライド中は変更を加えていませんが、この方法を使用してイテレータを自由にカスタマイズできます。