总结一下关于在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 相关文章推荐
深入理解以DEBUG方式线程的底层运行原理
Jun 21 Java/Android
java实现对Hadoop的操作
Jul 01 Java/Android
浅谈sql_@SelectProvider及使用注意说明
Aug 04 Java/Android
Java spring单点登录系统
Sep 04 Java/Android
springboot 多数据源配置不生效遇到的坑及解决
Nov 17 Java/Android
OpenCV实现普通阈值
Nov 17 Java/Android
Netty分布式客户端处理接入事件handle源码解析
Mar 25 Java/Android
Flutter集成高德地图并添加自定义Maker的实践
Apr 07 Java/Android
Java 使用类型为Object的变量指向任意类型的对象
Apr 13 Java/Android
spring IOC容器的Bean管理XML自动装配过程
May 30 Java/Android
详解Spring Security如何在权限中使用通配符
Jun 28 Java/Android
Spring boot实现上传文件到本地服务器
Aug 14 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操作xml入门之xml标签的属性分析
2015/01/23 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
jQuery LigerUI 使用教程入门篇
2012/01/18 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
jQuery实现的导航动画效果(附demo源码)
2016/04/01 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
2017/06/21 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
微信小程序实现文件、图片上传功能
2020/08/18 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
python实现单链表的方法示例
2019/09/03 Python
python 实现多线程下载视频的代码
2019/11/15 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
Python模块 _winreg操作注册表
2020/02/05 Python
教师实习期自我鉴定
2013/10/06 职场文书
转党组织关系介绍信
2014/01/08 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
未婚证明格式
2015/06/15 职场文书