Java 8和Java 9中的Stream.peek()方法
我正在学习Java 8
lambda表达式,我想问一下以下与peek
我遇到的函数接口中的方法有关的Java代码。
在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
最终结果,但与此同时,您不List
以 任何
方式(filter
例如通过或distinct
)更改的初始大小。这是在Streams中完成的优化。
顺便说一句,即使您添加了虚拟过滤器,它也会显示您期望的结果:
values.stream () .map(n -> n*2)
.peek(System.out::print)
.filter(x -> true)
.count();
以上是 Java 8和Java 9中的Stream.peek()方法 的全部内容, 来源链接: utcz.com/qa/412567.html