Jdk 1.8 stream 新特性

220 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

写作目的

不水文,记录日常java开发中的小知识点,薅薅羊毛。

let us know it

关于jdk 1.8 相信很多从事java开发的小伙伴有很多可能都是知道的,这个版本更新很久了,相比较与近几年很多公司都选择使用1.8进行系统的开发建设了,其中jdk1.8也有很多的新特性 ,像增加了关于 空判断,stream ,lamda 函数式接口等,然后本篇主要讲述的事开发过程中使用比较多的 stram 流式处理。

Stream

其实第一次接触 stream 不是java原生代码的 本人有过一端时间的 flutter 开发 中就有流式处理数据的东西,然后后面实际java开发1.8的时候这个东西还是很喜欢的,在大数据量的情况下 它可以替代原本我们认知的 for 循环处理 获取各类数据啥的。

image.png

image.png 流式处理相应的数据,大数据量的情况下性能等信息会比 for 等处理提升效率并且相应的代码更加简洁

操作类型: 过滤,排序,去重,获取特定数据......

基本操作使用

首先流式处理 stream 有两个方式 一个是单线程版本流式处理

stream 单线程版本流式处理 处理属于有序 eg : 循环打印 1,2,3,4  就是一致的  1,2,3,4 
parallelStream  多线程版本处理处理 无序 eg : 循环打印 1,2,3,4  就是无序的  可能 4,2,3,1

相对而言 根据自己的情况选择 一般数据量大并且不涉及线程安全的情况 推荐使用 parallelStream

过滤


List<Integer> integers = Arrays.asList(1, 2, 3, 4, 2, 6, 0, 7, 7, 8);
//for循环过滤数据
List<Integer> collect = integers.stream().filter(item -> item == 6).collect(Collectors.toList());
System.out.println(collect);
List<Integer> collect2 = integers.parallelStream().filter(item -> item == 6).collect(Collectors.toList());

数据转换

将原始数据可以通过自己的方法获取到指定数据或者进行数据的转换

image.png

排序

//排序
List<Integer> collect1 = integers.stream().sorted(Integer::compareTo).collect(Collectors.toList());
System.out.println(collect1);

分组

image.png

....

总结

关于流式处理数据 以上是在实际开发过程中使用较多的情况,具体得有这种思路然后见处理 配合各类操作快速获取自己所需要的内容!!!

end

自己最近状态不咋地 ,不想上班...不爱学习了....