技术干货|Java函数式编程之——Stream流
在很多人去面试的时候被问起Stream流,如果没有玩过JDK8的Stream人都以为面试官在问你IO流,然后你一说IO流面试官直接否定你,然后再让你说Stream,然后…
并且现在很多公司里写的代码也开始大量地加入了Stream流的操作,所以下面我们就来看看JDK8 给我们提供的一个非常好用的Stream的使用。
- Stream介绍
Stream以及相关流接口都是JDK8 新增的API,它可以让我们声明式地对数组或集合的数据进行处理,所以它看起来更像是一种可以对数据处理的“数据流”。
可以把流的看成是一个管道里的流,这样我们可以在管道中对流数据进行一些操作,比如筛选、排序、遍历、计数、聚合等等。
开发中很多情况如果我们使用流对集合中数据进行操作就可以做到代码即干净简单、又高效地实现。
值得注意的是Stream本身不会存储元素、Stream也不会改变源对象(原始数据)。
流的使用可以分为三部分:
获取一个数据流
流的中间操作
流的终结操作(可以获取结果)
- 流的获取
流的获取方式也有很多种,我们即可以通过Stream提供的of方法来获取一个流,也可以使用数组和集合提供的方法来获取一个流。
Stream获取
数组获取
集合获取
集合JDK8之后增加了stream()方法和parallelStream()方法可以分别获取一个串行流和并行流(多线程)。
- 流的中间操作
Stream流提供了很多的的中间处理操作,例如:遍历、过滤、排序、限定查询等。
循环遍历-forEach
forEach方法中就是对集合循环遍历的时候执行的代码,这里可以使用Lambda表达式来完成,使用如下:
数据过滤-filter
filter方法可以根据我们设定的过滤条件是否满足来筛选数据,需要返回一个boolean结果,如果返回为true则通过放入结果集,返回false则不会放入结果集。
使用如下:
元素值转换-map
map()方法支持对于集合中的元素进行一对一处理和转换,可以使用lambda表达式,使用如下:
排序-sort
限定查询-limit
去重重复元素-distinct
4.流的终结操作
流的终结操作也有很多,这里主要列举一些常用的方法,如下:
计数-count
最值获取-max/min
返回第一个数值-findFirst
返回数组-toArray
返回不同类型的集合-collect
以上就是非常全面的Stream流的操作了,已经熟悉的小伙伴们就可以使用Stream流来替换以往的操作体验下它的简单高效吧。
相关文章
- 《淘宝技术这十年》读书笔记 (二).Java时代的脱胎换骨和坚若磐石
- Java实现 LeetCode 677 键值映射(字典树)
- java实现猜生日
- Java实现 泊松分酒
- (转载)java多态(2)-------Java转型(向上或向下转型)
- Java 性能调优指南之 Java 集合概览
- Java--使用多线程下载,断点续传技术原理(RandomAccessFile)
- 【JAVA】java中split以"." 、""、“|”分隔字符串
- Java 集合
- Oracle要对Java收费了,SAP基于Java技术栈的那些产品的客户怎么办
- Atitit 搜索蓝牙设备 powershell的实现 java noede.js python 先用脚本语言python nodejs,不好实现。。Java 也不好实现。。 Netcore可以,
- Atitit。Js调用后台语言 java c# php swing android swt的方法大总结
- paip.java 架构师之路以及java高级技术
- 华为OD机试 - 投篮大赛(Java & JS & Python)
- 当年的Java考试:JAVA&移动应用&大数据-大三-社区疫苗接种管理系统(全部源码·保姆式呵护)
- 【Java】java 环境配置(详细教程)
- 【java】Java 枚举(enum)如何使用以及原理
- java中集合类中Collection接口中的Map接口的常用方法熟悉
- 在 Java 项目中解压7Zip特殊压缩算法文件
- Java开发技术之成为高级java工程师必须学习的三个技术
- 快2023年了,还不会性能调优?阿里P7亲授“Java性能调优技术宝典”看完直接涨薪5K
- 【java】Java 中泛型的实现原理
- 【java】Java 抽象类
- 【java】Java并发编程系列- volatile关键字(高并发中特实用哦)