首页 / 程序员圈 / 正文
java8中一个极其强悍的新特性Stream(非常实用)
处之簇 发表于:2020-5-23 08:23:41 复制链接 看图 发表新帖
阅读数:13110

下载APP可以快速和圈友联系

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

java8中一个极为强悍的新特征Stream(很是适用)-1.jpg

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

java8中一个极为强悍的新特征Stream(很是适用)-2.jpg

我们只需要把方式酿成static范例的便可以了。

2、建立一个Stream

方式一:经过一个调集建立Stream

java8中一个极为强悍的新特征Stream(很是适用)-3.jpg

方式二:经过一个数组建立Stream

java8中一个极为强悍的新特征Stream(很是适用)-4.jpg

方式三:经过Stream.of

java8中一个极为强悍的新特征Stream(很是适用)-5.jpg

方式四:建立一个无穷流

java8中一个极为强悍的新特征Stream(很是适用)-6.jpg

3、利用Stream操纵数据

操纵1:挑选和切片

java8中一个极为强悍的新特征Stream(很是适用)-7.jpg

操纵2:映照

java8中一个极为强悍的新特征Stream(很是适用)-8.jpg

操纵3:排序

java8中一个极为强悍的新特征Stream(很是适用)-9.jpg

4、停止Stream

操纵1:婚配和查找

java8中一个极为强悍的新特征Stream(很是适用)-10.jpg

操纵2:归约

java8中一个极为强悍的新特征Stream(很是适用)-11.jpg

操纵3:收集

java8中一个极为强悍的新特征Stream(很是适用)-12.jpg

stream根基的语法就是这样,你会发现Stream就像是一个工具一样,可以帮我们分析处置数据,极为的好用,可是今朝还不晓得其效力若何。按照网上一位大佬的内存时候分析,实在在数据量比力庞大的时辰,Stream可以为我们节省大量的时候,数据量小的时辰并不明显。


上一篇:可以将Excel 数据转换成Json格式的适用工具 excel2json
下一篇:Xcode中的10个内置调试工具
温馨提示:
下载好向圈客户端可以随时随地交流学习经验,也可以和圈友发起聊天成为好友
好向圈www.kuaixunai.com是一个专业经验分享交流平台,请提供优质的经验内容分享,拒绝任何广告内容出现,低质量广告内容硬广包含手机号码,微信,QQ或者二维码,网址等形式存在可能会审核不通过甚至封号 圈友联系仅限于好向圈APP进行及时沟通咨询 要想被各大搜索引擎尽快收录请做好内容原创工作,才会有更好的推广效果。
返回列表
使用道具 举报
#stream, #一个, #数据, #操作, #我们
17 条评论
您需要登录后才可以回帖 登录 | 立即注册
123472548 发表于 2020-5-23 08:28:08 | 阅读全部
stream强大在支持并行处理 简直吊炸天
使用道具 举报
回复
昆仑知秋一叶重 发表于 2020-5-23 08:31:20 | 阅读全部
可以理解为在内存中处理集合数据
使用道具 举报
回复
流浪小鼠刚 发表于 2020-5-23 08:37:06 | 阅读全部
已经把我的代码能用这改的都改了
使用道具 举报
回复
123474437 发表于 2020-5-23 08:42:04 | 阅读全部
写起来很爽,但是还是要慎重点,stream存在性能问题,我对比过,查找一个含有10000000个元素的list中的最大值,stream比for循环慢了不是一星半点。。。比scala也是慢了很多,说句客观的吧,在函数式编程方面,scala确实比java强劲。jdk的新特性都和scala极为相似。
使用道具 举报
回复
夜雨倦鸟饶 发表于 2020-5-23 08:46:35 | 阅读全部
这玩意儿比for不是慢了一点点[捂脸],没有足够数据量支撑的情况下慎用,只有大量数据操作情况下才推荐使用stram
使用道具 举报
回复
桌预密标 发表于 2020-5-23 08:50:17 | 阅读全部
单机版的spark flink算子。
使用道具 举报
回复
aaanew2017 发表于 2020-5-23 08:54:08 | 阅读全部
缺点呢?
使用道具 举报
回复
二十一世纪聋人 发表于 2020-5-23 08:56:45 | 阅读全部
挺好用的,只是c#十年前就有类似的功能[捂脸]
使用道具 举报
回复
浪子荣华遗 发表于 2020-5-23 09:02:09 | 阅读全部
数据量小的时候没有for 循环快 500以上的数据就会慢慢比for循环快了
使用道具 举报
回复
leeyeun 发表于 2020-5-23 09:03:54 | 阅读全部
都jdk12了,小哥哥
使用道具 举报
回复
123473506 发表于 2020-5-23 09:04:57 | 阅读全部
stream
使用道具 举报
回复
87kg__ 发表于 2020-5-23 09:10:26 | 阅读全部
stream流
使用道具 举报
回复
123474211 发表于 2020-5-23 09:12:27 | 阅读全部
今天刚看这方面内容,就给推荐了。厉害
使用道具 举报
回复
番茄啊番茄姓 发表于 2020-5-23 09:16:50 | 阅读全部
c#不敢相信,这么基础的功能,现在才有?
使用道具 举报
回复
123473506 发表于 2020-5-23 09:22:33 | 阅读全部
相当于阉割版spark
使用道具 举报
回复
赶考的书生2017 发表于 2020-5-23 09:26:57 | 阅读全部
关注你好久了
使用道具 举报
回复
玛露琪娜驹 发表于 2020-5-23 09:31:23 | 阅读全部
时间复杂度和空间复杂度如何,一个语法糖就别这样推了
使用道具 举报
回复
广告合作以及侵权投诉客服QQ:1623331347 江苏好向圈信息科技有限公司 网站地图1 网站地图2