Java 8 中引入了Stream API,极大地简化了集合操作,使得开发者可以使用流的方式进行数据处理。Stream 提供了一系列非常强大的操作方法,其中之一就是 peek() 方法。peek() 是一个中间操作,它可以用来在操作流的过程中查看元素的处理状态。本文将详细介绍 peek() 方法的使用场景和原理,并配合代码示例帮助大家深入理解。
一、peek() 方法简介
peek() 方法的定义在 java.util.stream.Stream 接口中,其签名如下:
Stream<T> peek(Consumer<? super T> action);
作用:
peek() 是一个中间操作,它允许我们在流的每个元素上执行一个操作,但并不会改变流中的元素或中断流的处理。常用作调试工具,用来在流的各个操作步骤中查看流中的数据。它接收一个 Consumer 函数作为参数,Consumer 函数可以对每个流中的元素执行某些动作。
特点:
- peek() 不会消耗流,只是执行一个旁路行为。
- 因为是中间操作,它不会触发终端操作,因此在调用完 peek() 后,还需要调用诸如 forEach()、collect()
这类终端操作来触发流的处理。
示例代码:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class PeekExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// 使用peek方法调试流操作过程
List<Integer> result = numbers.stream()
.filter(n -> n % 2 == 0) // 过滤出偶数
.peek(n -> System.out.println("Filtered: " + n)) // 查看过滤结果
.map(n -> n * n) // 对偶数进行平方
.peek(n -> System.out.println("Mapped: " + n)) // 查看映射结果
.collect(
© 版权声明
THE END


![表情[baoquan]-拾光赋](https://blogs.ink/wp-content/themes/zibll/img/smilies/baoquan.gif)


暂无评论内容