汇智动力

售前免费咨询热线: 4 0 0 - 1 8 6 - 0 9 0 5
汇智资讯Huizhi information

当前位置:首页 »Java函数式编程之——Stream流

Java函数式编程之——Stream流

日期:2021-09-22 15:28:28 访问量: 来源:

在很多人去面试的时候被问起Stream流,如果没有玩过JDK8的Stream人都以为面试官在问你IO流,然后你一说IO流面试官直接否定你,然后再让你说Stream,然后...

Java函数式编程

并且现在很多公司里写的代码也开始大量的加入了Stream流的操作,所以下面我们就来看看JDK8 给我们提供的一个非常好用的Stream的使用。

 

1. Stream介绍

Stream以及相关流接口都是JDK8 新增的API,它可以让我们声明式的对数组或集合的数据进行处理,所以它看起来更像是一种可以对数据处理的“数据流”。

 

可以把流的看成是一个管道里的流,这样我们可以在管道中对流数据进行一些操作,比如筛选、排序、遍历、计数、聚合等等。

 

开发中很多情况如果我们使用流对集合中数据进行操作就可以做到代码即干净简单、又高效的实现。

 

值得注意的是Stream本身不会存储元素、Stream也不会改变源对象(原始数据)。

 

流的使用可以分为三部分:

  • 获取一个数据流

  • 流的中间操作

  • 流的终结操作(可以获取结果)

 

2. 流的获取

流的获取方式也有很多种,我们即可以通过Stream提供的of方法来获取一个流,也可以使用数组和集合提供的方法来获取一个流。

 

  • Stream获取

Java函数式编程
  • 数组获取

Java函数式编程
  • 集合获取

集合JDK8之后增加了stream()方法和parallelStream()方法可以分别获取一个串行流和并行流(多线程)。

Java函数式编程

 

3. 流的中间操作

Stream流提供了很多的的中间处理操作,例如:遍历、过滤、排序、限定查询等。

 

  • 循环遍历-forEach

Java函数式编程

forEach方法中就是对集合循环遍历的时候执行的代码,这里可以使用Lambda表达式来完成,使用如下:

Java函数式编程
  • 数据过滤-filter

Java函数式编程

filter方法可以根据我们设定的过滤条件是否满足来筛选数据,需要返回一个boolean结果,如果返回为true则通过放入结果集,返回false则不会放入结果集。

 

使用如下:

Java函数式编程

 

  • 元素值转换-map

map()方法支持对于集合中的元素进行一对一处理和转换,可以使用lambda表达式,使用如下:

Java函数式编程

 

  • 排序-sort

Java函数式编程

 

  • 限定查询-limit

Java函数式编程
  • 去重重复元素-distinct

 
Java函数式编程

 

4.流的终结操作

流的终结操作也有很多,这里主要列举一些常用的方法,如下:

 

  • 计数-count

Java函数式编程

 

  • 最值获取-max/min

Java函数式编程

 

  • 返回第一个数值-findFirst

Java函数式编程

 

  • 返回数组-toArray

Java函数式编程

 

  • 返回不同类型的集合-collect

Java函数式编程

 

以上就是非常全面的Stream流的操作了,已经熟悉的小伙伴们就可以使用Stream流来替换以往的操作体验下它的简单高效吧。

相关阅读Reading

全国热线:400-186-0905

总部热线:028-6547-1147

周一至周日9:30-24:00

我要咨询
汇智动力微信

汇智动力微信公众号