我一直在尝试使用流操作,并且试图了解以下内容为什么不将每个整数转换为字符串。我对peek()的理解是,它充当中间运算符,并且如果给定的操作后面跟随终端运算符,则将给定的操作应用于流。任何帮助将是巨大的!

List<Integer> testList = Arrays.asList(10, 11, 12, 13, 14, 15);
testList.stream().peek(x -> x.toString()).forEach(x -> System.out.println(x.getClass()));

最佳答案

peek对每个流元素执行操作,但不修改流。它通常用于在进行某些调试操作之前或之后打印Stream的元素,例如stream.peek(System.out::println)documentation for peek 指出:

返回由该流的元素组成的流,并在从结果流中消耗元素时对每个元素另外执行提供的操作。

您正在寻找 Stream#map ,当用元素调用时,它将Stream的每个元素转换为函数的结果。根据documentation,它:

返回一个流,该流包括将给定函数应用于此流的元素的结果。

10-08 08:14
查看更多