总结一下关于在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分布式事务的 6 种解决方案
Jun 26 Java/Android
每日六道java新手入门面试题,通往自由的道路
Jun 30 Java/Android
解决Swagger2返回map复杂结构不能解析的问题
Jul 02 Java/Android
Java比较两个对象中全部属性值是否相等的方法
Aug 07 Java/Android
Spring this调用当前类方法无法拦截的示例代码
Mar 20 Java/Android
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
Mar 21 Java/Android
Dubbo+zookeeper搭配分布式服务的过程详解
Apr 03 Java/Android
MyBatis配置文件解析与MyBatis实例演示
Apr 07 Java/Android
Java处理延时任务的常用几种解决方案
Jun 01 Java/Android
Java实现简单小画板
Jun 10 Java/Android
SpringBoot详解执行过程
Jul 15 Java/Android
Spring Boot优化后启动速度快到飞起技巧示例
Jul 23 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
第二节--PHP5 的对象模型
2006/11/16 PHP
php之对抗Web扫描器的脚本技巧
2008/10/01 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
PHP扩展类型及安装方式解析
2020/04/27 PHP
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
使用 Node.js 开发资讯爬虫流程
2018/01/07 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
Python中实现参数类型检查的简单方法
2015/04/21 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
深入浅析Python的类
2018/06/22 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
Python matplotlib画曲线例题解析
2020/02/07 Python
python实现用户名密码校验
2020/03/18 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
洲际酒店集团美国官网:IHG美国
2017/11/16 全球购物
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
信息技术课后反思
2014/04/27 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
学校2014年度工作总结
2014/12/06 职场文书
行政经理岗位职责
2015/04/15 职场文书
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB
Java中API的使用方法详情
2022/04/06 Java/Android