Java8 新特性 Stream() API
新特性里面为什么要加入流Steam()
集合是Java中使用最多的API,几乎每一个Java程序都会制造和处理集合。集合对于很多程序都是必须的,但是如果一个集合进行,分组,排序,筛选,过滤...这些操作,会感到非常的难受,所以我们在连接数据库,处理数据时,数据能在sql中处理就在sql中处理,不能的就在java程序中处理,最后没有办法了才在页面中处理。
这个为什么呢?因为使用sql语句中处理数据,真的非常的简单。如果把数据取出来,在程序中用集合处理,用循环会非常的麻烦。所以java在Java8里面加入了Steam(),为了就是处理集合的时候,就象写sql语句一样简单。
Stream() 流
Stream流就是一种类似sql语句的方式来操作集合,可以以一种更加直观的方式对集合进行运算和表达式的高阶抽象。可以极大的提高效率,并且写出高质量的代码。 为什么说是流呢? 是因为它是把集合抽象成了一根管子内的水一样,可以进行过滤,处理,排序...等等操作。元素在经过中间操作以后,最后有终端操作来进行收集,可以变成你想要的任何类型的数据。比如:收集成 List,Set,Map,Array...
创建Stream()流的几种方式
- 通过Collection()类的Stream()来创建串行流
- 通过Collection()类的parallelStream()来创建并行流,可以非常简单的利用多核资源
- 通过Arrays类中的Stream()方法来获取流
- 通过无限流 >>
操作的实例: Java8 新特性 Stream 练习实例
中间操作:有状态操作
中间操作,就是把数据处理成自己想要的类型,并且有状态操作,是在所有的数据基础上进行操作的。比如dictinct(去重),sorted(排序)....
所有的有状态操作:
去重 distinct
跳过 skip
截断 limit
排序 sorted
中间操作:无状态操作
中间无状态操作,可以在单个对单个的数据进行处理。比如:filter(过滤)一个元素的时候,也可以判断,比如map(映射)...
过滤 filter
映射 map
扁夹化 flatMap
遍厉 peek
终端操作:短路
把经过中间操作处理过的值收集起来,短路的意思是当符合条件的时候,直接结束流。比如说:findFirst(查找首个)只要有第一个就结束流。
匹配所有 allMatch
任意匹配 anymMatch
不匹配 noneMatch
查找首个 findFirst
查找任意 findAny
终端操作:非短路
非短路终端操作:必须把所有的元素都过一遍之后才会结束流。比如说:forEach,必须把所有的元素都循环一遍之后才会结束。
遍厉 forEach
归约 reduce
最大值 max
最小值 min
聚合 collect
计数 count
细节决定成败!
个人愚见,如有不对,恳请扶正!
Java8 新特性 Stream() API的更多相关文章
- java8新特性——Stream API
Java8中有两大最为重要得改变,其一时Lambda表达式,另外就是 Stream API了.在前面几篇中简单学习了Lambda表达式得语法,以及函数式接口.本文就来简单学习一下Stream API( ...
- Java8新特性 - Stream API
Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找.过滤和映射数据等操作.使用Stream API对集合进行操作,就类似与使用SQL执行的数据库 ...
- Java8 新特性 Stream Api 之集合遍历
前言 随着java版本的不断更新迭代,java开发也可以变得甜甜的,最新版本都到java11了,但是后面版本也是不在提供商用支持,需要收费,但是java8 依然是持续免费更新使用的,后面版本也更新很快 ...
- JDK1.8新特性——Stream API
JDK1.8新特性——Stream API 摘要:本文主要学习了JDK1.8的新特性中有关Stream API的使用. 部分内容来自以下博客: https://blog.csdn.net/icarus ...
- Java8 新特性 Stream 非短路终端操作
非短路终端操作 Java8 新特性 Stream 练习实例 非短路终端操作,就是所有的元素都遍厉完,直到最后才结束.用来收集成自己想要的数据. 方法有: 遍厉 forEach 归约 reduce 最大 ...
- Java8 新特性 Stream 短路终端操作
短路终端操作 Java8 新特性 Stream 练习实例 传入一个谓词,返回传为boolean,如果符合条件,则直接结束流. 匹配所有 allMatch 任意匹配 anymMatch 不匹配 none ...
- Java8 新特性 Stream 无状态中间操作
无状态中间操作 Java8 新特性 Stream 练习实例 中间无状态操作,可以在单个对单个的数据进行处理.比如:filter(过滤)一个元素的时候,也可以判断,比如map(映射)... 过滤 fil ...
- Java8 新特性 Stream 练习实例
练习实例 配合Java8 新特性 Steam() API 使用 //没有写get set 构造方法 public class Sku { private Integer skuId; private ...
- 这可能是史上最好的 Java8 新特性 Stream 流教程
本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...
随机推荐
- Server2016 IIS安装配置
- 一文让你读懂Synchronized底层实现,秒杀面试官
本文为死磕Synchronized底层实现第三篇文章,内容为轻量级锁实现. 轻量级锁并不复杂,其中很多内容在偏向锁一文中已提及过,与本文内容会有部分重叠. 另外轻量级锁的背景和基本流程在概论中已有讲解 ...
- Docker install in Linux
install command sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-man ...
- 玄学 npm报错记录
刚开始是版本原因npm报错,ok卸载重装就可以了, 后面报错 npm ERR! code ENOGIT npm ERR! No git binary found in $PATH npm ERR! n ...
- 【React】Redux入门 & store体验
组件间传值联动是令人头疼的问题,尤其是一个组件影响多个其他组件状态变化的时候,常常需要一级一级与父组件传值,与父组件的兄弟组件传值等等, 如何化繁为简地处理‘牵一发动全身’的清理就是将所有组件的sta ...
- Try-Catch-Finally语句块执行问题
Try-Catch-Finally语句块执行问题 记录一个今天某公司的面试问题,其实我问题回答对了,但是面试官问我动手验证过没有,这还真没有,纯理论,被怼惨了,希望自己能变得更强大. Try-Catc ...
- 微软官方的.net系列文档
闲下来的时候给自己补充补充基础,微软官方的相关技术文档地址,最新最全最官方:https://docs.microsoft.com/zh-cn/ 其中.NET专区:https://docs.micros ...
- linux下网卡捆绑
七种bond模式说明:mod=0:(balance-rr) Round-robin policy(平衡抡循环策略)mod=1:(active-backup) Active-backup policy( ...
- 流程及迭代驱动测试管理软件, itest 发布到开源中国
itest 源码已发布到码云 ,项目已被开源中国收录!详见 https://www.oschina.net/p/itest-cn 测试人自己开发,汇聚10年沉淀,独创流程驱动测试.度量展现测试人价值 ...
- Java同步和异步,阻塞和非阻塞
同步和异步.阻塞和非阻塞 同步和异步关注的是消息通信机制. 同步是指: 发送方发出数据后, 等待接收方发回响应后才发下一个数据包的通讯方式. 就是在发出一个调用时, 在没有得到结果之前, 该调用就不返 ...