当前位置: 首页 > 知识库问答 >
问题:

如何在不使用终止语句的情况下终止Java流?

步德宇
2023-03-14

我一直在玩流,然后我注意到当我执行以下操作时,它不会在控制台中产生输出:

String[] is = {"Hello", "World", "My", "Name", "Is", "Jacky"};
Arrays.stream(is).peek(s -> System.out.println(s));

我认为这是因为peek()是一个非终止流方法,应该使用foreach()而不是peek()来终止流并生成结果:

Arrays.stream(is).forEach(s -> System.out.println(s));

然而,是否有一种方法可以‘提前’终止流,使用一个自定义的终止方法(函数接口),它除了终止流之外什么都不做?..有没有一个适当的方法来利用Java现有的东西来做到这一点?

我知道我可以这样做:

Arrays.stream(is).peek(s -> System.out.println(s)).forEach(s -> {});

但那感觉很浪费。

共有1个答案

班思源
2023-03-14

根本没有这回事。

关于这样的功能已经有过讨论,例如在这里,你可以读到这不会发生,以及为什么。

您的最佳选项是foreach(x->{})或者您可以自己创建这样的虚拟使用者并在任何需要的地方使用它:

static class Dummies {
     static <T> Consumer<T> getConsumer() {
         return x -> {};
     }
}
 类似资料:
  • 问题内容: 我使用带有标签的php docker容器作为基础: 当我尝试重新启动容器内的apache2时,容器停止: 如何在不停止容器的情况下重新启动apache2? 在将更改放入dockerfile之前,我想使用容器并对其进行自定义。我想安装一些扩展程序,为了使其正常工作,我需要重新启动apache才能使更改生效。 这是通过以下文件的日志文件: 问题答案: 如果将apache用作保持运行容器的主

  • 请解释返回语句如何为trie的简单递归解析起作用 案例A: 案例B: 案例A对我很有效。但是,我不明白结果被推到堆栈后会发生什么。“it”如何知道终止这些路径?

  • 我有一个应用Gradle插件的项目。我的问题是,即使底层进程终止,它也不会终止:如果我运行这个: 带有仅包含系统的主系统。退出(0) 程序终止,但Gradle没有终止。当底层Java程序终止时,如何强制Gradle进程终止? 编辑:我知道我可以调用gradle——stop,但这需要另一个进程,这不是一个选项。

  • 本文向大家介绍如何终止WebWork?相关面试题,主要包含被问及如何终止WebWork?时的应答技巧和注意事项,需要的朋友参考一下 Web Worker 使用教程

  • 输出:pool-2=线程-1 pool-3=线程-1,pool-4=线程-1............. 我想要池-2=线程-1池-2=线程-1池-2=线程-1................ Threadpool不能从method()放到外部,每次都需要创建新的Threadpool。我可以完全终止线程池吗? 有什么需要帮忙的吗

  • 你好团队, 我正在我的系统上运行一个Maven构建(mvn clean install),Maven构建在下面的代码行之后被终止,没有任何错误。 我使用的是最新的maven版本3.6.3(硬件配置-英特尔i5第4代处理器和16 GB RAM)。 下面是我用来执行项目maven构建的命令。 在IntelliJ中: D:\Software\jdk-11.0.10 9\bin\java。exe-Dmav