总结一下关于在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 相关文章推荐
解决SpringBoot文件上传临时目录找不到的问题
Jul 01 Java/Android
详细了解java监听器和过滤器
Jul 09 Java/Android
关于springboot 配置date字段返回时间戳的问题
Jul 25 Java/Android
java executor包参数处理功能 
Feb 15 Java/Android
InterProcessMutex实现zookeeper分布式锁原理
Mar 21 Java/Android
spring注解 @PropertySource配置数据源全流程
Mar 25 Java/Android
Java中的继承、多态以及封装
Apr 11 Java/Android
Spring Boot接口定义和全局异常统一处理
Apr 20 Java/Android
Android 界面一键变灰 深色主题工具类
Apr 28 Java/Android
带你了解Java中的ForkJoin
Apr 28 Java/Android
Java版 单机五子棋
May 04 Java/Android
Java 多线程协作作业之信号同步
May 11 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中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
2019/02/20 Javascript
vue通过video.js解决m3u8视频播放格式的方法
2019/07/30 Javascript
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
基于Python实现的微信好友数据分析
2018/02/26 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
Python实现Dijkstra算法
2018/10/17 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
Python选择网卡发包及接收数据包
2019/04/04 Python
python使用配置文件过程详解
2019/12/28 Python
如何使用Python发送HTML格式的邮件
2020/02/11 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
C#可否对内存进行直接的操作
2015/02/26 面试题
创业计划书中要认真思考的问题
2013/12/28 职场文书
三个儿子教学反思
2014/02/03 职场文书
优秀部门获奖感言
2014/02/14 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
学习方法演讲稿
2014/05/10 职场文书
国庆宣传标语
2014/06/30 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
幼儿园中班班级总结
2015/08/10 职场文书