总结一下关于在Java8中使用stream流踩过的一些坑


Posted in Java/Android onJune 24, 2021

Java8的stream流

第一个坑:

Collectors.toAsList()其实是new了一个list,在向里面赋值。

总结一下关于在Java8中使用stream流踩过的一些坑

注意这里Collectors.toList()的写法,这里其实是底层new ArraryList().筛选的数据放到一个新的list。虽然标1处和标2处是同一个变量,但是内存地址是不一样啊。下面的逻辑时把hldrPolVOList中的某些元素删除。但是这个方法执行完后其实是没有删除里面元素的。原因就是这里的new ArraryList()更改了内存地址造成的。

测试:

总结一下关于在Java8中使用stream流踩过的一些坑

解决办法:

总结一下关于在Java8中使用stream流踩过的一些坑

第二个坑:

list.stream().foreach(p->{return;});这里的return是结束的foreach而不是外部方法

总结一下关于在Java8中使用stream流踩过的一些坑

解决办法:把stream改成for循环。

第三个坑:

并行流(parallelStream() )的foreach操作里,如果把一个ArrayList里的值copy到另外一ArrayList时,就有可能多或者少元素。原因并行流是多线程,而ArrayList是非线程安全的。

写在最后

关于java8的stream是非常好用的,主要写的代码更加简洁,不在写大量代码。但是也不是所有场景都适合用的,如果本来业务耗时比较长,然后有希望减少业务执行时间。在数据量不是很大的情况下,stream流是没有优势的,也就是说数据量小,且同意业务内多处使用stream处理数据,这时执行耗时比for循环更多,只有业务量达到百万级别才体现出优势。

到此这篇关于总结一下关于在Java8中使用stream流踩过的一些坑的文章就介绍到这了,更多相关Java8的stream流内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
教你用Java在个人电脑上实现微信扫码支付
Jun 13 Java/Android
Java并发编程之Executor接口的使用
Jun 21 Java/Android
Java实现多线程聊天室
Jun 26 Java/Android
Spring Boot 实现敏感词及特殊字符过滤处理
Jun 29 Java/Android
Jackson 反序列化时实现大小写不敏感设置
Jun 29 Java/Android
SpringBoot 拦截器妙用你真的了解吗
Jul 01 Java/Android
Spring Boot 排除某个类加载注入IOC的操作
Aug 02 Java/Android
Spring this调用当前类方法无法拦截的示例代码
Mar 20 Java/Android
关于EntityWrapper的in用法
Mar 22 Java/Android
Java 超详细讲解IO操作字节流与字符流
Mar 25 Java/Android
Java 超详细讲解十大排序算法面试无忧
Apr 08 Java/Android
Elasticsearch 配置详解
Apr 19 Java/Android
IDEA使用SpringAssistant插件创建SpringCloud项目
使用feign服务调用添加Header参数
详解Java实现数据结构之并查集
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 #Java/Android
详解Java实现设计模式之责任链模式
Jun 23 #Java/Android
Spring boot应用启动后首次访问很慢的解决方案
Java并发编程之详解CyclicBarrier线程同步
You might like
一个简单的自动发送邮件系统(二)
2006/10/09 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
javascript一些不错的函数脚本代码
2008/09/10 Javascript
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
2014/04/25 Python
基于Python的身份证号码自动生成程序
2014/08/15 Python
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
电气自动化大学生求职信
2013/10/16 职场文书
资金主管岗位职责范本
2014/03/04 职场文书
元旦促销方案
2014/03/15 职场文书
文体活动实施方案
2014/03/27 职场文书
爱心助学感谢信
2015/01/21 职场文书
2016年情人节问候语
2015/11/11 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
Golang生成Excel文档的方法步骤
2021/06/09 Golang
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers