gpt4 book ai didi

java - Java 8 与 Java 9 中的 Stream.peek() 方法

转载 作者:行者123 更新时间:2023-12-01 23:26:05 26 4
gpt4 key购买 nike

我正在学习 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 属性,因此根本不需要执行 mappeek

换句话说,您所关心的只是 count 作为最终结果,但与此同时,您不会更改任何内容中 List 的初始大小方式(例如通过filterdistinct)这是在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/58307385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com