• Java中stream流中peek的用法和foreach用法区别和联系实例?


    在Java中,peek()和forEach()都是Stream的中间操作,用于对流中的元素执行某些操作。它们之间有一些区别和联系:

    用途:

    peek():用于调试、记录或观察流中的元素,例如打印元素的值或执行其他辅助操作。它类似于一个调试工具,不会修改流的内容。
    forEach():用于对流中的每个元素执行特定操作,例如打印、持久化到数据库等。它是一个终端操作,流操作结束后不会返回结果。
    返回值:

    peek():返回与原始流相同的流,允许对流进行进一步的操作。
    forEach():没有返回值,只是对流中的每个元素执行指定的操作。
    以下是一个示例代码演示peek()和forEach()的用法和区别:

    java Copy code
    import java.util.Arrays;
    import java.util.List;

    public class StreamPeekForEachExample {
        public static void main(String[] args) {
            List numbers = Arrays.asList(1, 2, 3, 4, 5);

            System.out.println("Using peek():");
            numbers.stream()
                    .peek(n -> System.out.println("Peek: " + n))
                    .map(n -> n * 2)
                    .collect(Collectors.toList());

            System.out.println("\nUsing forEach():");
            numbers.stream()
                    .forEach(n -> System.out.println("ForEach: " + n));
        }
    }
    在上述示例中,我们有一个整数列表numbers。首先,我们使用peek()方法在每个元素上执行一个打印操作,并输出Peek:后面跟随元素的值。

    接下来,我们使用map()方法对流中的每个元素进行乘以2的操作,并将结果收集到一个新的列表中。由于peek()是一个中间操作,它只是观察元素而不修改流的内容。

    然后,我们使用forEach()方法对流中的每个元素执行一个打印操作,并输出ForEach:后面跟随元素的值。forEach()是一个终端操作,它遍历流中的每个元素并执行指定的操作。

    通过观察输出,我们可以看到peek()在流操作期间打印了每个元素的值,而forEach()在流操作结束后打印了每个元素的值。

    需要注意的是,peek()和forEach()都应谨慎使用,并且不应该用于引入副作用或修改流的内容。如果只是想对流中的元素执行某种操作,建议考虑使用forEach();而如果想在流操作链中调试或观察流的处理过程,可以使用peek()。

  • 相关阅读:
    Vue 中为什么要有nextTick?
    pdf怎么转换成ppt?不要错过本篇文章
    -bash: jps: command not found
    两台服务器之间快速同步大表数据
    爬虫基础——Scrapy(B站学习笔记)
    【Java 基础篇】Java网络编程实战:P2P文件共享详解
    华为政企园区网络交换机产品集
    ElementUI分页功能
    【zabbix】企业微信告警
    回归模型的算法性能评价
  • 原文地址:https://blog.csdn.net/gb4215287/article/details/134328210