Stream学习过程中遇到的一个问题记录

Stream学习过程中遇到的一个问题记录

@Test
public void stream_modifiedV2(){List<String> strings = Arrays.asList("aaa","bb","cc","dddddddddddddddddddddddddddddddd");Stream<String> stringStream = strings.stream();stringStream.filter(s -> s.length()<=12);stringStream.forEach(System.out::println);
}

上面的代码会报错:
java.lang.IllegalStateException: stream has already been operated upon or closed

查找了相关资料,总结一下:

Stream 就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返。

stream.filter会根据传入的Predicate进行过滤,但是过滤后返回了一个新的Stream。原来的Stream已经被操作过了,新的Stream没有被操作过。

JavaDoc里面的额

A stream should be operated on (invoking an intermediate or terminal stream operation) only once.

因此正确的写法是:

@Test
public void stream_modifiedV2(){List<String> strings = Arrays.asList("aaa","bb","cc","dddddddddddddddddddddddddddddddd");Stream<String> stringStream = strings.stream();stringStream = stringStream.filter(s -> s.length()<=12);  //注意这个stringStream.forEach(System.out::println);
}

官方推荐更简洁的做法:

Stream<String> stringStream = strings.stream.filter(s-> s.length()<=12);

参考回答

http://stackoverflow.com/questions/34677708/why-is-this-java-stream-operat ed-upon-twice

转载于:https://www.cnblogs.com/kakaxisir/p/5755507.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ swap用法

swap用于交换两个元素的值 template<class T> void swap(T &a,T &b) {T c(a);ab;bc; } 例如交换两个int型变量的值&#xff1a; #include <iostream> using namespace std;int main() {int a1,b2;swap(a,b);cout<<a<<" "<<…

python table类中的 可以作为初步观察工具_Python程序设计基础_课程2020最新章节测试网课课后答案...

Python程序设计基础_课程2020最新章节测试网课课后答案更多相关问题科学探究的过程一般要经过______、作出假设、制定方案、实施方案&#xff0c;得出结论等五个步骤&#xff0e;在生物学研究中&#xff0c;当实验的结果与原有的知识发生矛盾时&#xff0c;应大胆地修正原有的知…

关于字节对齐以及内存占用

参考博文&#xff1a; http://www.javamex.com/tutorials/memory/object_memory_usage.shtml 本文主要考虑正常情况下一个对象在堆上的内存占用情况&#xff1a;对于下面的特殊情况不作讨论 1、某些情况下&#xff0c;JVM可能不会把对象存储在堆上&#xff1a;比如小的线程私有…

人工智能应用实践与趋势

来源&#xff1a;阿里云研究中心《崛起的超级智能》一书主要阐述当今天人类为人工智能的春天到来而兴奋&#xff0c;为人工智能是否超越人类而恐慌的时候&#xff0c;一个更为庞大、远超人类预期的智能形态正在崛起&#xff0c;种种迹象表明50年来&#xff0c;互联网正在从网状…

C++中set和map的erase用法

删除容器中值为 val 的元素 size_type erase (const value_type& val); 删除 it迭代器指向的元素 iterator erase (const_iterator it); 删除 [first,last) 区间内的所有元素 iterator erase (const_iterator first, const_iterator last);

excel表格打印每页都有表头_这么漂亮的Excel表格,用黑白打印机打印真是可惜了...

我们在日常工作中&#xff0c;利用Excel制作的表格通过会填充颜色&#xff0c;设置字体和边框格式、颜色&#xff0c;把表格弄的漂漂亮亮的&#xff0c;一个是为了缓解视觉疲劳&#xff0c;另一个是为了老板看到漂亮的表格一不小心加工资呢&#xff0c;但是一个问题出来了&…

常用的分隔符有哪三种_加固博士:常用防水材料大比拼,究竟花落谁家?

建筑物漏水问题&#xff0c;是日常生活中非常常见的问题&#xff0c;房屋漏水怎么办才好呢&#xff1f;这个问题困扰了很多人&#xff0c;有些户主会图个省事&#xff0c;将漏水问题直接交给装修公司&#xff0c;只要愿意支付防水施工费用&#xff0c;装修公司就会安排资深的师…

svg笔记----------path篇

每个路径都必须以moveto 命令开始 moveto、lineto和closepath <path d"M 10 10 L 100 10z"/> 大写字母命令的坐标是绝对的&#xff0c;小写字母命令的坐标是相对的。其它情况&#xff1a; 1.z(closepath)命令没有坐标&#xff0c;它的大小写形式效果相同。 2.如…

互联网大脑,城市大脑的“大脑”究竟什么含义?

来源&#xff1a;刘锋的未来课堂21世纪以来&#xff0c;科技领域与一个神经学领域的概念 “大脑”出现了意外的结合&#xff0c;涌现出诸多前沿科技的大脑概念。从互联网大脑&#xff0c;城市大脑&#xff0c;到谷歌大脑&#xff0c;百度大脑&#xff0c;讯飞超脑、360安全大脑…

C++ lower_bound和upper_bound的区别

lower_bound( begin,end,num)&#xff1a;返回第一个大于等于参数num的迭代器 upper_bound( begin,end,num)&#xff1a;返回第一个大于参数num的迭代器 > 和> 是二者的区别

电脑fps低怎么办_电脑想要英雄联盟玩的流畅,主要看哪几个方面?

刚刚在找素材的时候&#xff0c;看到有个兄弟在某乎上说打英雄联盟有点卡&#xff0c;换个固态硬盘能不能提升游戏体验。在看到这个问题之后&#xff0c;小编发现原来还有很多电脑小白不知道什么东西会影响游戏体验。所以今天我就大概说一下玩英雄联盟这款游戏看重的地方吧。小…

python迷宫求解代码_Python中的迷宫求解

我孜孜不倦地试图用python制作一个迷宫解算器。我已经使用了我所有的资源&#xff0c;比如朋友、互联网和堆栈。我已经根据之前的堆栈问题修改了很多代码&#xff0c;但是即使完全复制代码(我不喜欢这样做)&#xff0c;也无法得到答案。在迷宫/输入文件(嵌套列表)&#xff1a;[…

使用代理下载Unity AssetStore上资源的方法

Unity的AssetStore下载package的时候经常抽风&#xff0c;而且开了代理工具的全局代理依然无效。 检索网络后得知&#xff0c;这是因为它下载的时候不检测IE代理设置&#xff0c;而是取环境变量中HTTPS_proxy和HTTP_proxy的值&#xff0c;所以添加这两个变量并指定其为你的代理…

2019华为全联接大会(汇总)

来源&#xff1a;龙为科技2019年9月18-20日&#xff0c;华为公司在上海举办第四届华为全联接大会&#xff08;HUAWEI CONNECT&#xff09;&#xff0c;发布云和AI的最新产品与解决方案&#xff0c;分享如何应用云和AI的技术,推进数字化转型的最新实践。华为首次发布整体计算战略…

printf打印百分号%

在要打印的%之前添加多一个% int main() {printf("%f%%",2.3);return 0; } 打印&#xff1a;2.300000%

xlwings 合并单元格 读取_xlwings,让excel飞起来

excel已经成为必不可少的数据处理软件&#xff0c;几乎天天在用。python有很多支持操作excel的第三方库&#xff0c;xlwings是其中一个。关于xlwingsxlwings开源免费&#xff0c;能够非常方便的读写Excel文件中的数据&#xff0c;并且能够进行单元格格式的修改。xlwings还可以和…

一棵树的生物量怎么算_宾利的眼镜盒价值2万,算坑人吗?网友:良心产品,不坑穷人...

阅读本文前&#xff0c;请您先点击上面的蓝色字体“总李谈车”&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到文章了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。原创持续更新“第1991天”宾利&#xff0c;全球顶级豪车之一&#xff0…

sql注入基于错误-单引号-字符型

查找注入点在url中&#xff1a;1. 2. and 11/and 123. 随即输入&#xff08;整形&#xff09;4. -1/1回显上下页面&#xff08;整形&#xff09;5. and sleep&#xff08;5&#xff09; &#xff08;判断页面返回时间&#xff09;判断有多少列order by .....爆显示位&#xff1…

Gartner 2019年人工智能成熟度曲线的超前趋势

来源&#xff1a;FreeBuf.COMGartner的这种成熟度周期凸显出人工智能正以多种不同的方式影响企业根据Gartner对2019年的CIO议程调查&#xff0c;2018年至2019年间&#xff0c;部署人工智能(AI)的组织从4%增长到了14%。与几年前相比&#xff0c;人工智能正在以多种不同的方式影响…

C++打印浮点数时保留两位小数

int main() {printf("%.2f",2.356); //2.36&#xff0c;以四舍五入方式保留小数return 0; }