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 中製作自定義迭代器的方式。我們在覆蓋時沒有做任何更改,但是你可以使用這種方式根據需要自定義迭代器。
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn