在 Java 中建立生成器
Sheeraz Gul
2023年10月12日
生成器是建立迭代器的簡單方法。它可以被描述為一次可以迭代一個值的物件或資料。
Java 沒有為 Python 等生成器提供任何內建功能,但我們可以使用迭代器來建立一個。
本教程將演示如何在 Java 中建立生成器。
在 Java 中使用迭代器建立生成器
迭代器用於遍歷多維陣列,這意味著它們可以執行多層迴圈的功能。
package delftstack;
import java.util.Arrays;
import java.util.Iterator;
public class Java_Generator {
public static void main(String args[]) {
Integer[][][] Demo_Array =
new Integer[][][] {{{1, 2, null, 3}, null, {4}}, null, {{5}, {6}, null, {7}}};
Iterator<Integer> demo_iterator =
Arrays.stream(Demo_Array)
.filter(ab -> ab != null)
.flatMap(ab
-> Arrays.stream(ab)
.filter(ac -> ac != null)
.flatMap(ac -> Arrays.stream(ac).filter(ae -> ae != null)))
.iterator();
while (demo_iterator.hasNext()) {
System.out.println(demo_iterator.next());
}
}
}
上面的程式碼遍歷一個三維陣列並列印忽略空值的值。
輸出:
1
2
3
4
5
6
7
我們也可以直接使用 Stream 並設定邏輯以根據特定模式進行迭代。
package delftstack;
import java.util.Iterator;
import java.util.stream.*;
public class Java_Generator {
public static void main(String args[]) {
Iterator<Integer> Demo_Generator =
Stream.iterate(new Integer[] {1, 2}, demo -> new Integer[] {demo[1], demo[0] + demo[1]})
.map(demo -> demo[0])
.iterator();
// Print the first 10 elements according to the given iterator logic
for (int x = 0; x < 10; x++) {
System.out.println(Demo_Generator.next());
}
System.out.println("First Iteration for 10 elements is finished here, Now the next 10");
// Print the first 10 elements according to the given iterator logic
for (int x = 0; x < 10; x++) {
System.out.println(Demo_Generator.next());
}
}
}
上面的程式碼建立了一個流,該流具有迭代陣列中僅給出兩個數字的數字的邏輯。
它根據新整數陣列和 map()
函式中的邏輯生成更多數字,建立一個具有以下數字和前兩個數字的序列。
輸出:
1
2
3
5
8
13
21
34
55
89
First Iteration for 10 elements is finished here, Now the next 10
144
233
377
610
987
1597
2584
4181
6765
10946
作者: Sheeraz Gul
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook