在 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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。