Stream流操作-简单结果终止方法

简介: Stream流操作-简单结果终止方法

简单结果终止方法

按照前面介绍的,终止方法里面像 count 、 max 、 min 、 findAny 、 findFirst 、anyMatch 、 allMatch 、 nonneMatch 等方法,均属于这里说的简单结果终止方法。所谓简 单,指的是其结果形式是数字、布尔值或者Optional对象值等。

publicvoidtestSimpleStopOptions() {
List<String>ids=Arrays.asList("205", "10", "308", "49",
"627","193", "111", "193");
// 统计stream操作后剩余的元素个数System.out.println(ids.stream().filter(s->s.length() >2).count());
// 判断是否有元素值等于205System.out.println(ids.stream().filter(s->s.length() >2)
                       .anyMatch("205"::equals));
// findFirst操作ids.stream().filter(s->s.length() >2).findFirst()
        .ifPresent(s->System.out.println("findFirst:"+s));
}

执行后结果为:

6truefindFirst:205

避坑提醒

这里需要补充提醒下,一旦一个Stream被执行了终止操作之后,后续便不可以再读这个流执行 其他的操作了,否则会报错,看下面示例:

publicvoidtestHandleStreamAfterClosed() {
List<String>ids=Arrays.asList("205", "10", "308", "49", "627",
"193", "111", "193");
Stream<String>stream=ids.stream().filter(s->s.length() >2);
// 统计stream操作后剩余的元素个数System.out.println(stream.count());
System.out.println("-----下面会报错-----");
// 判断是否有元素值等于205try {
System.out.println(stream.anyMatch("205"::equals));
    } catch (Exceptione) {
e.printStackTrace();
    }
System.out.println("-----上面会报错-----");
}

执行的时候,结果如下:

-----下面会报错-----java.lang.IllegalStateException: streamhasalreadybeenoperateduponorclosedatjava.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:229)
atjava.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:449)
atcom.veezean.skills.stream.StreamService.testHandleStreamAfterClosed(StreamService.java:153)
atcom.veezean.skills.stream.StreamService.main(StreamService.java:176)
-----上面会报错-----

因为stream已经被执行 count() 终止方法了,所以对stream再执行 anyMatch 方法的时候,就会报错 stream has already been operated upon or closed ,这一点在使用的时候需要特别注意。


相关文章
|
Java 开发工具 Maven
svn篇2:idea中使用svn
svn篇2:idea中使用svn
6597 0
|
12月前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
3068 2
|
关系型数据库 MySQL 数据库
rds迁移数据迁移工具选择
rds迁移数据迁移工具选择
530 3
|
机器学习/深度学习 人工智能 芯片
极智AI | 谈谈为什么量化能加速推理
本文主要讨论一下为什么量化能加速模型推理。
745 0
|
12月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
786 2
|
运维 Linux Apache
Docker详解(十二)——Docker容器权限问题
Docker详解(十二)——Docker容器权限问题
3623 5
|
JavaScript 前端开发 开发者
|
机器学习/深度学习 自然语言处理 算法
什么是大模型
什么是大模型
2332 1
|
人工智能 自然语言处理 算法
揭秘AI写作助手:技术原理与应用实践
在数字化浪潮的推动下,人工智能(AI)正逐步渗透到我们工作和生活的方方面面。本文将深入探讨AI写作助手的技术原理及其在不同场景的应用实例,旨在揭示这项技术如何助力内容创作、提升效率和质量。通过分析其背后的算法、数据处理方式以及实际运用效果,读者可以获得对AI写作工具更全面的认识,并了解如何利用这些工具优化自身的写作流程。
|
JavaScript
uView(u-collapse)折叠 展开 高度问题 无法撑开 nextTick
这段内容是关于一个使用 Vue 的代码示例,涉及`u-collapse`组件的使用问题。代码展示了如何通过`v-for`循环渲染`levelList`和`filmList`数据。当`u-collapse`以手风琴模式运行时,`filmList`的数据加载后未能正确展开。问题在于尽管尝试了官方文档的方法和网络上的其他解决方案,但`filmList`依然无法正常显示。
629 4