Java 8 Stream API 中的 peek() 方法详解,以及需要注意的坑。
peek()
方法是 Java 8 Stream API 中的一个中间操作。它用于查看流中的元素,但并不改变流的内容。这个方法对于调试或者检查流中的元素是非常有用的。
peek()
方法的签名如下:
Stream<T> peek(Consumer<? super T> action);
peek()
方法接收一个 Consumer
函数式接口作为参数,这意味着你可以传递一个 lambda 表达式或者方法引用来对流中的每个元素执行操作。
使用 peek()
方法的例子:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream()
.peek(n -> System.out.println("Processing element: " + n))
.map(n -> n * 2)
.peek(n -> System.out.println("Mapped element: " + n))
.collect(Collectors.toList());
在这个例子中,peek()
被用来打印出流中的元素,然后再通过 map()
方法将每个元素乘以2。
需要注意的是,peek()
方法不应该在生产环境中用于性能关键的代码,因为它可能会引入不期望的副作用,并可能对流的性能产生负面影响。它更多地用于调试和开发阶段。
评论已关闭