Java8 中一个极其强悍的新特性,很多人没用过(非常实用)
一、Stream是什么 二、Stream语法讲解 1、前提准备 2、创建一个Stream 3、使用Stream操作数据 4、终止Stream
Java8中有两个非常有名的改进,一个是Lambda表达式,一个是Stream。如果我们了解过函数式编程的话,都知道Stream真正把函数式编程的风格引入到了java中。这篇文章由简入繁逐步介绍Stream。
一、Stream是什么
从名字来看,Stream就是一个流,他的主要作用就是对集合数据进行查找过滤等操作。有点类似于SQL的数据库操作。一句话来解释就是一种高效且易用的数据处理方式。大数据领域也有一个Steam实时流计算框架,不过和这个可不一样。别搞混了。
举个例子吧,比如说有一个集合Student数据,我们要删选出学生名字为“张三”的学生,或者是找出所有年龄大于18岁的所有学生。此时我们就可以直接使用Stream来筛选。当然了这只是给出了其中一个例子。Stream还有很多其他的功能。
Stream和Collection的区别就是:Collection只是负责存储数据,不对数据做其他处理,主要是和内存打交道。但是Stream主要是负责计算数据的,主要是和CPU打交道。现在明白了吧。
二、Stream语法讲解
Stream执行流程很简单,主要有三个,首先创建一个Stream,然后使用Stream操作数据,最后终止Stream。有点类似于Stream的生命周期。下面我们根据其流程来一个一个讲解。
1、前提准备
首先我们创建一个Student类,以后我们每次都是操作这个类
![](https://filescdn.proginn.com/8e03d0b1b98d0764b492e3e8238f1485/6d8c5782e08e3f52c97f2b49c78619ea.webp)
然后下面我们再创建一个StudentData类,用于获取其数据
![](https://filescdn.proginn.com/331a8eeff96194287a7b994501e99959/08153f0fc3d7d108663c3fcf116209ab.webp)
我们只需要把方法变成static类型的就可以了。
2、创建一个Stream
方式一:通过一个集合创建Stream
![](https://filescdn.proginn.com/837ad80cb0d82a89b54614c72954d435/ea368eb3f2a1986430724060b575b075.webp)
方式二:通过一个数组创建Stream
![](https://filescdn.proginn.com/1235b1b5607af15c1b92a3842c4c0cf0/5f00cdc51e5667ddac3fa3853694577e.webp)
方式三:通过Stream.of
![](https://filescdn.proginn.com/169268da657e190c9729ac02e547e170/1f5aaa0b946c10edc128694be1ef41c7.webp)
方式四:创建一个无限流
![](https://filescdn.proginn.com/5a8b2cfafe82c9ef1fc4ec532117fd42/9815e8c51cc632aff9a79b7454c295ae.webp)
3、使用Stream操作数据
操作1:筛选和切片
![](https://filescdn.proginn.com/508eee51df7df641097b5943f549597c/9be98f645f499eb8eafa949867aba042.webp)
操作2:映射
![](https://filescdn.proginn.com/70af62965b99c8c3ca4b9932f92f2ecc/e1cad7f6489b8d47bdeb02108f0fcb19.webp)
操作3:排序
![](https://filescdn.proginn.com/3eb3b42c041bcd6dee9873d981395851/7861a9fc5be51028105465eea900e3d9.webp)
4、终止Stream
操作1:匹配和查找
![](https://filescdn.proginn.com/92d247a48a17079081dc61310066e950/6c5b7969cbbe1cfe25b6aec62c64c6e0.webp)
操作2:归约
![](https://filescdn.proginn.com/92ec39ac0308801d07148cf720beebf6/b0e02486afe1375724d5c6433f5d62e8.webp)
操作3:收集
![](https://filescdn.proginn.com/4d3ed5efb1e4ca11fdd43e19724e263a/6baa594ea25a9e1df33d4322b6f2bea6.webp)
stream基本的语法就是这样,你会发现Stream就像是一个工具一样,可以帮我们分析处理数据,极其的好用,但是目前还不知道其效率如何。根据网上一位大佬的内存时间分析,其实在数据量比较庞大的时候,Stream可以为我们节省大量的时间,数据量小的时候并不明显。
来源:Java基基
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!
![](https://filescdn.proginn.com/f884c86cfb6a32a8a99d5127f8098e31/48d581ed5a5dfd443a96ae0f11706b86.webp)