22

Java8中一个极其强悍的新特性,很多人没用过(非常实用)

 3 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzAxMTg2MjA2OA%3D%3D&%3Bmid=2649855033&%3Bidx=2&%3Bsn=80d613a24e48ac3adef5c143c9a32f87
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

yEFnief.gif!mobile

转自: Java的架构师技术栈

原文: http://suo.im/6p27hA(点击阅读全文前往)

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类,以后我们每次都是操作这个类

NBfe6nA.jpg!mobile

然后下面我们再创建一个StudentData类,用于获取其数据

fIZBNfn.jpg!mobile

我们只需要把方法变成static类型的就可以了。

2、创建一个Stream

方式一:通过一个集合创建Stream

rMvEBfi.jpg!mobile

方式二:通过一个数组创建Stream

eiuqYnm.jpg!mobile

方式三:通过Stream.of

YjqmYn2.jpg!mobile

方式四:创建一个无限流

E77FFnz.jpg!mobile

3、使用Stream操作数据

操作1:筛选和切片

ENZ3qeA.jpg!mobile

操作2:映射

BvuURvA.jpg!mobile

操作3:排序

NBrqUbF.jpg!mobile

4、终止Stream

操作1:匹配和查找

JrQrIbm.jpg!mobile

操作2:归约

aYbQnaN.jpg!mobile

操作3:收集

6bmeam2.jpg!mobile

stream基本的语法就是这样,你会发现Stream就像是一个工具一样,可以帮我们分析处理数据,极其的好用,但是目前还不知道其效率如何。根据网上一位大佬的内存时间分析,其实在数据量比较庞大的时候,Stream可以为我们节省大量的时间,数据量小的时候并不明显。

----------  END  ----------

重磅!后厂技术官-技术交流群已成立

扫码可添加后厂技术官助手, 可申请加入后厂技术官大群和细分方向群,细分方向已涵盖: Java、Python、机器学习、大数据、人工智能 等群。

一定要备注: 开发方向+地点+学校/公司+昵称 (如Java开发+北京+快手+阿信) ,根据格式备注,可更快被通过且邀请进群

Vv2Qr2i.jpg!mobile

▲长按加群

推荐阅读

•  太疯狂了!马斯克脑机接口试验成功!这次是活猪下次是人脑!

•  昨天,百度被绿了?

•  再见 Python,Hello Julia!

•  任正非:华为没有 996,更没有 007!

•  CTO 写的代码,真是绝了

推荐一个技术号

Github实验室, 由国内一线大厂专家、985博士、硕士组成的团体运营。 主要分享和研究业界实用、有趣的开源项目,学习资源,开发工具,学术交流。

关注就无套路送你一份5000页Java面试最强合集PDF。

uMvUrqQ.png!mobile

最近面试BAT,整理一份面试资料 大厂Java面试通关指北 ,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点“ 在看 ”,关注公众号并回复  BAT  领取,更多内容陆续奉上。

如有收获,点个在看,诚挚感谢 明天见(。・ω・。)ノ♡


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK