点击上方“方志朋”,选择“设为星标”

回复”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中一个极其强悍的新特性,很多人没用过(非常实用)相关推荐

  1. java8中一个极其强悍的新特性Stream(非常实用)

    本博客系转载:https://zhuanlan.zhihu.com/p/97493325 1.Stream语法讲解 Stream执行流程很简单,主要有三个,首先创建一个Stream,然后使用Strea ...

  2. java切片_ java中一个极其强悍的新特性Stream详解(非常实用)

    java8中有两个非常有名的改进,一个是Lambda表达式,一个是Stream.如果我们了解过函数式编程的话,都知道Stream真正把函数式编程的风格引入到了java中.这篇文章由简入繁逐步介绍Str ...

  3. android p preview_细数 Android P 开发者预览版中最不能错过的新特性

    原标题:细数 Android P 开发者预览版中最不能错过的新特性 2018年安卓巴士全球开发者论坛-重庆站 [线下活动]春天到了 跟小编一起去重庆嗨皮吧~ Android P 应用适配新特性1.Pr ...

  4. Keil中使有C99及其新特性

    Keil中使有C99及其新特性 Keil选择C99编译 C99特性介绍 Keil选择C99编译 选择C/C++,勾选C99 C99特性介绍 宏支持可变参数定义,例如 #define NRF_LOG_I ...

  5. es6添加删除class_ES6中常用的10个新特性讲解

    ECMAScript 6(ES6) 目前基本成为业界标准,它的普及速度比 ES5 要快很多,主要原因是现代浏览器对 ES6 的支持相当迅速,尤其是 Chrome 和 Firefox 浏览器,已经支持 ...

  6. Java 14 中令人期待的五大新特性!

    随着新的 Java 发布生命周期的到来,新版本预计将于 2020 年 3 月发布,本文将对其中的 5 个主要特性作些概述. 作者 | Sylvain Saurel 译者 | 苏本如,责编 | 郭芮 出 ...

  7. 12c oracle 修改内存_Oracle12c中性能优化功能增强新特性之重大突破——内存列存储新特性...

    Oracle12c中内存列存储 内存列存储(IM column store) 是Oracle12.1.0.2版本的主要特点.该特点允许列,表,分区和物化视图在内存中以列格式存储,而不是通常的行格式.数 ...

  8. 你不得不了解 Helm 3 中的 5 个关键新特性

    作者 | Rafal 导读:Helm 是 Kubernetes 的一个软件包管理器.两个月前,它发布了第三个主要版本,Helm 3.在这一新版本中,有许多重大变化.本文作者将介绍自己认为最关键的 5 ...

  9. java 声明一个bus类,EventBus3新特性及用法

    EventBus 3 简介 EventBus是一种为了优化Android组件之间事件传递的解耦工具,通过发布/订阅事件总线来实现事件在不同组件之间的事件传递. 在EventBus 3之前,greenr ...

最新文章

  1. RecylerView为item添加点击事件
  2. 【Win8启动后自动进入传统桌面设置】
  3. python项目实例代码-python开源项目及示例代码
  4. 一篇讲清:如何构建可重复,可扩展且盈利的“魔力”转化流程?
  5. K8S教程:使用kubebuilder开发简单的Operator
  6. jQuery——parent(),parents(),offsetParent(),closets()方法
  7. 科创板开户手续费要2万元,大家怎么看?
  8. [电子设计竞赛]两线制直流电源电压显示表 -2019年绍兴市电子设计大赛A题
  9. 谷粒商城 -- 项目环境搭建
  10. Microsoft Outlook设置GMail谷歌邮箱
  11. xposed修改手机屏幕分辨率
  12. CS大作业--程序人生--Hello‘s P2P
  13. 关于CSS小三角的实现,小三角边框的实现,IE6下CSS小三角非透明的情况
  14. BF2地图下载 战地系列非官方单机地图集
  15. mysql统计出每个姓氏的人数_Python 之 MySql 每日一练 130——同名同性学生名单,并统计人数...
  16. 餐饮行业为什么要开发点餐app?
  17. dp主机_怎样设置显示器DP接口信号优先?
  18. html使三角形渐变色,CSS3 简单的三角形渐变效果
  19. 人工智能 之 定义与发展
  20. android获取外放设备,Android 监听耳机外放设备

热门文章

  1. 运维基础-文件权限管理
  2. Android通过ksoap2调用.net(c#)的webservice
  3. 最先进的开源游戏引擎KlayGE 3.12.0发布
  4. 技术图文:如何利用 C# 爬取 ONE 的交易数据?
  5. 低耗时、高精度,微软提基于半监督学习的神经网络结构搜索算法
  6. 程序员必知的20个Python技巧
  7. 十年公务员转行IT,自学AI三年,他淬炼出746页机器学习入门笔记
  8. ​哪些开发问题最让程序员“头秃”?我们分析了Stack Overflow的11000个问题
  9. AIの幕后人:探秘“硬核英雄”的超级武器
  10. 阿里AI攻克心血管识别技术,冠脉中心线提取论文入选国际医学影像会议