我正在学习 Java 8 lambda 表达式,并想询问以下与 peek
相关的 Java 代码。我遇到的函数接口(interface)中的方法。
在 IDE 上执行程序时,它没有输出。我期待它会给出 2, 4, 6
.
import java.util.Arrays;
import java.util.List;
public class Test_Q3 {
public Test_Q3() {
}
public static void main(String[] args) {
List<Integer> values = Arrays.asList(1, 2, 3);
values.stream()
.map(n -> n * 2)
.peek(System.out::print)
.count();
}
}
最佳答案
我假设您在 Java 9 下运行它?您没有更改流的 SIZED
属性,因此根本不需要执行 map
或 peek
。
换句话说,您只关心 count
作为最终结果,但同时您不会更改 any 中 List
的初始大小 方式(例如通过 filter
或 distinct
)这是在 Streams 中完成的优化。
顺便说一句,即使您添加了一个虚拟过滤器,这也会显示您的期望:
values.stream ()
.map(n -> n*2)
.peek(System.out::print)
.filter(x -> true)
.count();
关于java - Java 8 与 Java 9 中的 Stream.peek() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48221783/