行业资讯 2025年08月6日
0 收藏 0 点赞 573 浏览 1214 个字
摘要 :

文章目录 1.Stream peek()方法 1.1用途 1.2. 方法语法 1.3. 描述 2. Stream peek()示例 2.1 无终端操作使用peek() 2.2.终端操作使用peek() 3.结论 Java Stream peek……




  • 1.Stream peek()方法
    • 1.1用途
    • 1.2. 方法语法
    • 1.3. 描述
  • 2. Stream peek()示例
    • 2.1 无终端操作使用peek()
    • 2.2.终端操作使用peek()
    • 3.结论

    Java Stream peek()方法返回一个新的Stream,由原始Stream中的所有元素组成,这些元素在应用给定的Consumer操作后产生。

    注意,peek()方法是一种中间Stream操作,因此要处理通过peek()方法产生的Stream元素,我们必须使用终端操作。如果不使用任何终端操作而只使用Stream.peek(),则不会有任何作用。

    1.Stream peek()方法

    1.1用途

    根据Java文档,peek()方法的目的是支持调试,尤其是当我们想要查看流经Stream处理管道的元素时。

    我们可以在每个中间操作之后调用peek()方法,以查看中间操作对Stream元素的影响。

    Stream<T> stream = createStream();
    
    stream.operationOne()
        .peek()
        .operationTwo()
        .peek()
        .terminalOperation();
    

    1.2. 方法语法

    peek()返回由原始Stream元素组成的新Stream。

    这里,action是对消费的Stream元素执行的非干扰操作。执行操作后的元素结果被放入新的Stream中。

    Stream<T> peek(Consumer<? super T> action)
    

    1.3. 描述

    • Stream peek()方法是中间操作。
    • 它返回当前流的Stream。
    • 它还对每个元素执行提供的操作。
    • 对于并行流管道,该操作可以在任何时间,通过上游操作以任何线程对元素进行调用。
    • 如果操作修改了共享状态,则它本身需要负责提供所需的同步。
    • peek()主要用于支持调试,我们希望看到元素流经管道的某个状态。

    2. Stream peek()示例

    2.1 无终端操作使用peek()

    如上所述,没有终端操作的Stream.peek()没有任何作用。

    List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
     
    list.stream()
      .peek( System.out::println );   //什么也没打印出来
    

    2.2.终端操作使用peek()

    将peek()方法与终端操作一起使用Java程序使用peek() API来调试Stream操作,并记录处理中的Stream元素。

    List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
         
    List<Integer> newList = list.stream()
          .peek(System.out::println)
          .collect(Collectors.toList());
     
    System.out.println(newList);
    

    输出:

    1
    2
    3
    4
    5
    [1, 2, 3, 4, 5]
    

    3.结论

    以上就是Java Stream peek()方法详解

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9599.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号