总结一下关于在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 相关文章推荐
启动Tomcat时出现大量乱码的解决方法
Jun 21 Java/Android
Spring boot应用启动后首次访问很慢的解决方案
Jun 23 Java/Android
Java基础之线程锁相关知识总结
Jun 30 Java/Android
gateway网关接口请求的校验方式
Jul 15 Java/Android
Java移除无效括号的方法实现
Aug 07 Java/Android
SpringBoot实现quartz定时任务可视化管理功能
Aug 30 Java/Android
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
Sep 25 Java/Android
Java练习之潜艇小游戏的实现
Mar 16 Java/Android
Java字符串逆序方法详情
Mar 21 Java/Android
SpringBoot2零基础到精通之异常处理与web原生组件注入
Mar 22 Java/Android
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
Apr 13 Java/Android
Jmerte 分布式压测及分布式压测配置
Apr 30 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 面向对象实现代码
2009/11/11 PHP
php获取json数据所有的节点路径
2015/05/17 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
vue实现表格数据的增删改查
2017/07/10 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
python和flask中返回JSON数据的方法
2018/03/26 Python
python画图的函数用法以及技巧
2019/06/28 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
python中常见错误及解决方法
2020/06/21 Python
美国摄影爱好者购物网站:Focus Camera
2016/10/21 全球购物
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
恶意软件的定义
2014/11/12 面试题
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
高一家长会邀请函
2014/01/12 职场文书
事业单位辞职信范文
2014/01/19 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
预备党员的自我评价
2014/03/12 职场文书
公司承诺书怎么写
2014/05/24 职场文书
房屋维修协议书范本
2014/09/25 职场文书
宇宙与人观后感
2015/06/05 职场文书
SQL写法--行行比较
2021/08/23 SQL Server
解析python中的jsonpath 提取器
2022/01/18 Python
MySQL实现配置主从复制项目实践
2022/03/31 MySQL