Java——Stream流的peek方法详解

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(

原文链接:Java——Stream流的peek方法详解

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容