【发布时间】:2019-03-15 11:09:03
【问题描述】:
考虑这段代码:
public static void main(String[] args) {
Stream.iterate(1, i -> i + 1)
.flatMap(i -> Stream.of(i, i, i))
.peek(System.out::println)
.limit(4)
.forEach(i -> {});
}
Java 8 中的输出:
1
1
1
2
2
2
在 Java 11 中:
1
1
1
2
这是 Java 8 中的错误或预期行为,在 11 中已更改?
上述代码只是演示不同行为的示例,但更严重的差异意味着以下代码在 Java 11 中打印 1,2,3 但在 Java 8 中进入无限循环:
Stream.iterate(0, i -> i + 10)
.flatMap(i -> Stream.iterate(i + 1, j -> j + 1))
.limit(3)
.forEach(System.out::println);
【问题讨论】:
标签: java java-8 java-stream java-11 flatmap