总结一下关于在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的MathML转图片的方法(示例代码)
Jun 23 Java/Android
Spring Boot 启动、停止、重启、状态脚本
Jun 26 Java/Android
dubbo服务整合zipkin详解
Jul 26 Java/Android
Sleuth+logback 设置traceid 及自定义信息方式
Jul 26 Java/Android
mybatis3中@SelectProvider传递参数方式
Aug 04 Java/Android
详解JAVA的控制语句
Nov 11 Java/Android
SpringCloud Feign请求头删除修改的操作代码
Mar 20 Java/Android
Spring Data JPA框架的核心概念和Repository接口
Apr 28 Java/Android
Java实现添加条码或二维码到Word文档
Jun 01 Java/Android
Java处理延时任务的常用几种解决方案
Jun 01 Java/Android
Spring Security动态权限的实现方法详解
Jun 16 Java/Android
Android学习之BottomSheetDialog组件的使用
Jun 21 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
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
Postman无法正常返回结果问题解决
2020/08/28 Javascript
python抓取网页图片示例(python爬虫)
2014/04/27 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
Python输出带颜色的字符串实例
2017/10/10 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
24式加速你的Python(小结)
2019/06/13 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
个人求职简历的自我评价范文
2013/10/09 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
开除员工通知
2015/04/22 职场文书
2015年端午节活动方案
2015/05/05 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
浅谈Redis缓冲区机制
2022/06/05 Redis