HOWTO · Java
在 Java 中建立生成器
本教程演示瞭如何在 Java 中建立生成器。
本頁內容
生成器是建立迭代器的簡單方法。它可以被描述為一次可以迭代一個值的物件或資料。
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