总结一下关于在Java8中使用stream流踩过的一些坑
Java8的stream流
第一个坑:
Collectors.toAsList()其实是new了一个list,在向里面赋值。
注意这里Collectors.toList()的写法,这里其实是底层new ArraryList().筛选的数据放到一个新的list。虽然标1处和标2处是同一个变量,但是内存地址是不一样啊。下面的逻辑时把hldrPolVOList中的某些元素删除。但是这个方法执行完后其实是没有删除里面元素的。原因就是这里的new ArraryList()更改了内存地址造成的。
测试:
解决办法:
第二个坑:
list.stream().foreach(p->{return;});这里的return是结束的foreach而不是外部方法
解决办法:把stream改成for循环。
第三个坑:
并行流(parallelStream() )的foreach操作里,如果把一个ArrayList里的值copy到另外一ArrayList时,就有可能多或者少元素。原因并行流是多线程,而ArrayList是非线程安全的。
写在最后
关于java8的stream是非常好用的,主要写的代码更加简洁,不在写大量代码。但是也不是所有场景都适合用的,如果本来业务耗时比较长,然后有希望减少业务执行时间。在数据量不是很大的情况下,stream流是没有优势的,也就是说数据量小,且同意业务内多处使用stream处理数据,这时执行耗时比for循环更多,只有业务量达到百万级别才体现出优势。
到此这篇关于总结一下关于在Java8中使用stream流踩过的一些坑的文章就介绍到这了,更多相关Java8的stream流内容请搜索无名以前的文章或继续浏览下面的相关文章希望大家以后多多支持无名!
同类资源
- Java支持库多线程调用不崩溃
易语言Java支持库多线程调用不崩溃例子源代码,Java支持库多线程调用方法。...
- 基于javaweb的个人网站的毕业设计,包含毕业答辩的PPT文件
基于javaweb的个人网站的毕业设计,包含毕业答辩的PPT文件本文件感兴趣的可以参考一下。...
- javaWeb汽车销售系统
javaWeb汽车销售系统本文件感兴趣的可以参考一下,只有前台汽车销售,没有后台管理系统。...
- Java Web应用教程,网上购物系统的实现
JavaWeb应用教程,网上购物系统的实现本文件感兴趣的可以参考一下,简单又实用,帮助我入门的好书。...
- JavaWeb课程作业之网上水果商店
JavaWeb课程作业之网上水果商店本文件感兴趣的可以参考一下,含sql文件,使用Eclipse+MySql制作。...
- 关于Java毕业设计作品
关于Java毕业设计作品本文件感兴趣的可以参考一下,分布式项目实战所有视频。...
- 数据库课程设计Java、SQL sever实现人事管理系统
Java、SQLsever实现人事管理系统本文件感兴趣的可以参考一下,压缩包里有程序说明和设计报告。...
- java利用POI读取Word文件中的内容
java利用POI读取Word文件中的内容本文件感兴趣的可以参考一下,比较简单的例子,正在学习中。...
- java药店管理系统毕业设计程序
java药店管理系统毕业设计程序本文件感兴趣的可以参考一下,采用java技术构建的一个管理系统。整个开发过程...
- 面向对象编程C++和Java比较教程
面向对象编程C++和Java比较教程本文件感兴趣的可以参考一下,面向对象编程C++和Java比较教程中英文完整版pd...
- Java Web课后习题答案
JavaWeb课后习题答案本文件感兴趣的可以参考一下,包含有课件,课程代码。...
- eclipse的web项目实现Javaweb购物车
eclipse的web项目实现Javaweb购物车本文件感兴趣的可以参考一下,主要介绍了eclipse的web项目实现Javaweb购...