总结一下关于在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实现简易的分词器功能
Jun 15 Java/Android
详解Java实践之建造者模式
Jun 18 Java/Android
gateway网关接口请求的校验方式
Jul 15 Java/Android
Spring中的使用@Async异步调用方法
Nov 01 Java/Android
Java使用JMeter进行高并发测试
Nov 23 Java/Android
关于maven依赖 ${xxx.version}报错问题
Jan 18 Java/Android
java后台调用接口及处理跨域问题的解决
Mar 24 Java/Android
Spring Boot 底层原理基础深度解析
Apr 03 Java/Android
SpringBoot整合minio快速入门教程(代码示例)
Apr 03 Java/Android
Java 关于String字符串原理上的问题
Apr 07 Java/Android
Android开发之底部导航栏的快速实现
Apr 28 Java/Android
java获取一个文本文件的编码(格式)信息
Sep 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
基于Zookeeper的使用详解
2013/05/02 PHP
php实现paypal 授权登录
2015/05/28 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
简介Python中用于处理字符串的center()方法
2015/05/18 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
python3去掉string中的标点符号方法
2019/01/22 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
如何表示python中的相对路径
2020/07/08 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
免税水晶:Duty Free Crystal
2019/05/13 全球购物
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
优秀社区干部事迹材料
2014/02/03 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
交通志愿者活动总结
2014/06/27 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
生产现场禁烟通知
2015/04/23 职场文书
js中Object.create实例用法详解
2021/10/05 Javascript