总结一下关于在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使用jmeter进行压力测试
Jul 09 Java/Android
Spring Cloud 中@FeignClient注解中的contextId属性详解
Sep 25 Java/Android
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
Jan 18 Java/Android
利用Sharding-Jdbc进行分库分表的操作代码
Jan 22 Java/Android
你知道Java Spring的两种事务吗
Mar 16 Java/Android
Spring Security使用单点登录的权限功能
Apr 03 Java/Android
SpringCloud超详细讲解Feign声明式服务调用
Jun 21 Java/Android
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
Jun 21 Java/Android
Java Spring Boot请求方式与请求映射过程分析
Jun 25 Java/Android
Android RecyclerView实现九宫格效果
Jun 28 Java/Android
Spring中bean集合注入的方法详解
Jul 07 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
php empty() 检查一个变量是否为空
2011/11/10 PHP
跟我学Laravel之视图 & Response
2014/10/15 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
使用Angular缓存父页面数据的方法
2017/01/03 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
浅述python中argsort()函数的实例用法
2017/03/30 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
世界最大域名注册商:GoDaddy
2016/07/24 全球购物
大学新闻系求职信
2014/06/03 职场文书
英语分层教学实施方案
2014/06/15 职场文书
租房协议书
2014/09/12 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
校园安全教育心得体会
2016/01/15 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书