Java8中一个极其强悍的新特性,很多人没用过(非常实用)
点击上方“方志朋”,选择“设为星标”
回复”666“获取新整理的面试资料
转自: 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类,以后我们每次都是操作这个类
然后下面我们再创建一个StudentData类,用于获取其数据
我们只需要把方法变成static类型的就可以了。
2、创建一个Stream
方式一:通过一个集合创建Stream
方式二:通过一个数组创建Stream
方式三:通过Stream.of
方式四:创建一个无限流
3、使用Stream操作数据
操作1:筛选和切片
操作2:映射
操作3:排序
4、终止Stream
操作1:匹配和查找
操作2:归约
操作3:收集
stream基本的语法就是这样,你会发现Stream就像是一个工具一样,可以帮我们分析处理数据,极其的好用,但是目前还不知道其效率如何。根据网上一位大佬的内存时间分析,其实在数据量比较庞大的时候,Stream可以为我们节省大量的时间,数据量小的时候并不明显。
热门内容:
消灭 Java 代码的“坏味道”
代码生成器:IDEA 强大的 Live Templates
2020 年,给你 8 个程序员接私活的网站
Vert.x!这是目前最快的 Java 框架
SpringBoot线程池的创建、@Async配置步骤及注意事项
看看,这些细节上的坑,你犯了多少?
老大说,网上这种获取真实IP地址的方法不对,我不信...
AJAX 请求真的不安全么?
你知道为什么Java的main方法必须是public static void?
谈谈中间件开发,给想从事中间件开发的同学
大年夜排查bug:竟然是同事把Redis用成这鬼样子,坑了我
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡
Java8中一个极其强悍的新特性,很多人没用过(非常实用)相关推荐
- java8中一个极其强悍的新特性Stream(非常实用)
本博客系转载:https://zhuanlan.zhihu.com/p/97493325 1.Stream语法讲解 Stream执行流程很简单,主要有三个,首先创建一个Stream,然后使用Strea ...
- java切片_ java中一个极其强悍的新特性Stream详解(非常实用)
java8中有两个非常有名的改进,一个是Lambda表达式,一个是Stream.如果我们了解过函数式编程的话,都知道Stream真正把函数式编程的风格引入到了java中.这篇文章由简入繁逐步介绍Str ...
- android p preview_细数 Android P 开发者预览版中最不能错过的新特性
原标题:细数 Android P 开发者预览版中最不能错过的新特性 2018年安卓巴士全球开发者论坛-重庆站 [线下活动]春天到了 跟小编一起去重庆嗨皮吧~ Android P 应用适配新特性1.Pr ...
- Keil中使有C99及其新特性
Keil中使有C99及其新特性 Keil选择C99编译 C99特性介绍 Keil选择C99编译 选择C/C++,勾选C99 C99特性介绍 宏支持可变参数定义,例如 #define NRF_LOG_I ...
- es6添加删除class_ES6中常用的10个新特性讲解
ECMAScript 6(ES6) 目前基本成为业界标准,它的普及速度比 ES5 要快很多,主要原因是现代浏览器对 ES6 的支持相当迅速,尤其是 Chrome 和 Firefox 浏览器,已经支持 ...
- Java 14 中令人期待的五大新特性!
随着新的 Java 发布生命周期的到来,新版本预计将于 2020 年 3 月发布,本文将对其中的 5 个主要特性作些概述. 作者 | Sylvain Saurel 译者 | 苏本如,责编 | 郭芮 出 ...
- 12c oracle 修改内存_Oracle12c中性能优化功能增强新特性之重大突破——内存列存储新特性...
Oracle12c中内存列存储 内存列存储(IM column store) 是Oracle12.1.0.2版本的主要特点.该特点允许列,表,分区和物化视图在内存中以列格式存储,而不是通常的行格式.数 ...
- 你不得不了解 Helm 3 中的 5 个关键新特性
作者 | Rafal 导读:Helm 是 Kubernetes 的一个软件包管理器.两个月前,它发布了第三个主要版本,Helm 3.在这一新版本中,有许多重大变化.本文作者将介绍自己认为最关键的 5 ...
- java 声明一个bus类,EventBus3新特性及用法
EventBus 3 简介 EventBus是一种为了优化Android组件之间事件传递的解耦工具,通过发布/订阅事件总线来实现事件在不同组件之间的事件传递. 在EventBus 3之前,greenr ...
最新文章
- RecylerView为item添加点击事件
- 【Win8启动后自动进入传统桌面设置】
- python项目实例代码-python开源项目及示例代码
- 一篇讲清:如何构建可重复,可扩展且盈利的“魔力”转化流程?
- K8S教程:使用kubebuilder开发简单的Operator
- jQuery——parent(),parents(),offsetParent(),closets()方法
- 科创板开户手续费要2万元,大家怎么看?
- [电子设计竞赛]两线制直流电源电压显示表 -2019年绍兴市电子设计大赛A题
- 谷粒商城 -- 项目环境搭建
- Microsoft Outlook设置GMail谷歌邮箱
- xposed修改手机屏幕分辨率
- CS大作业--程序人生--Hello‘s P2P
- 关于CSS小三角的实现,小三角边框的实现,IE6下CSS小三角非透明的情况
- BF2地图下载 战地系列非官方单机地图集
- mysql统计出每个姓氏的人数_Python 之 MySql 每日一练 130——同名同性学生名单,并统计人数...
- 餐饮行业为什么要开发点餐app?
- dp主机_怎样设置显示器DP接口信号优先?
- html使三角形渐变色,CSS3 简单的三角形渐变效果
- 人工智能 之 定义与发展
- android获取外放设备,Android 监听耳机外放设备
热门文章
- 运维基础-文件权限管理
- Android通过ksoap2调用.net(c#)的webservice
- 最先进的开源游戏引擎KlayGE 3.12.0发布
- 技术图文:如何利用 C# 爬取 ONE 的交易数据?
- 低耗时、高精度,微软提基于半监督学习的神经网络结构搜索算法
- 程序员必知的20个Python技巧
- 十年公务员转行IT,自学AI三年,他淬炼出746页机器学习入门笔记
- ​哪些开发问题最让程序员“头秃”?我们分析了Stack Overflow的11000个问题
- AIの幕后人:探秘“硬核英雄”的超级武器
- 阿里AI攻克心血管识别技术,冠脉中心线提取论文入选国际医学影像会议