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

Java流意外结果

苏彦君
2023-03-14

我有以下代码:

Stream.of("Java", "Stream", "Test")
      .peek(s -> System.out.print(s + " "))
      .allMatch(s -> s.startsWith("J"));

为什么它会打印Java流?

共有2个答案

杜俊爽
2023-03-14

因为 allMatch() 检查流中的每个元素是否为真。由于第二个是假的,因此不必进一步检查。

所以peek()不会打印第三个元素。

公羊英达
2023-03-14

allMatch与大多数流操作一样是短路操作。因为allMatch提前返回,所以peek只打印前两个元素。

 类似资料:
  • 我有以下代码,它将标记字符串以创建对象列表: 我预期的输出是 1#、#Jon#、#176 2#、#Jack#、#200 3#、#Jimmy#、#160 如果我把内部分界线更改为类似的东西,它会正常工作为什么会发生这种行为?

  • 我已经按照此链接刷新了访问令牌。在将身份验证器添加到okHttp时,从改造回调onFailure方法中获取okhttp3上的意外流结束错误

  • 我得到意外结束流,而使用改造(2.9.0)与OkHttp3(4.9.1) 改装配置: 到目前为止,我发现了以下几点: 这个问题只发生在我使用从Windows系列操作系统(7、10、11)运行的Android Studio模拟器时——这是在来自不同网络的两台不同笔记本电脑上复制的 如果在苹果操作系统下运行Android Studio模拟器,那么在所有情况下,问题都不会再现 ARC/Postman客户

  • 问题内容: 我正在尝试使用Java的SimpleDateFormat来解析带有以下代码的日期字符串。 我期待一些解析错误。但有趣的是,它打印以下字符串。 无法推理出来。有人可以帮忙吗? 谢谢 问题答案: 已将其解析为 月份 号2011,因为month()是日期模式的第一部分。 如果将2011个月加到28年,则得到195年。 2011个月是167年零7个月。七月是第七个月。您将02指定为日,将28指

  • 问题内容: Redis 3.0.5 Spring数据Redis 1.3.6 jedis 2.6.3- 我们的Web应用程序,它通过pub / sub从redis接收数据。 -还以键/值对的形式对redis进行数据读/写。 -读/写发生在侦听器线程,独立监视线程和http请求线程上。 -我们对侦听器和Redis模板使用了相同的连接工厂 -我们的Redis服务器已配置“ timeout = 30” 在

  • 我读过其他线程,谈到使用单线程进行读/写。但是在我们的情况下,很难使用单线程。同样,根据RedisTemplate文档,它是线程安全的。该问题是偶然的,我们无法在任何开发/测试/UAT环境中重现。因此无法找到相同的确切原因。我们做错了什么?