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 欢迎关注个人微信公众 ...
随机推荐
- 第一章 权限管理DEMO简介
源代码GitHub:https://github.com/ZhaoRd/Zrd_0001_AuthorityManagement 1.系列介绍 工作已有五年之久,一直有想通过博客写点自己知道的,在博客 ...
- HighChat动态绑定数据 数据后台绑定(四)
后台绑定数据,直接返回json数据 IList<SummaryHour> adHourData = summarybll.FindList(str); List<, , , , , ...
- 把本地项目提交到GIT上
1.init之前 1.1 新建.gitignore文件 在提交之前.gitignore文件会把文件里面包含的内容都忽略掉 node_modules // webstorm里面的配置,别人不一定用 .i ...
- 深入java8的集合:ArrayList的实现原理
一.概述 一上来,先来看看源码中的这一段注释,我们可以从中提取到一些关键信息: Resizable-array implementation of the List interface. Implem ...
- vue定时器+弹框 跳到登陆页面
1.做一个请求拦截,并弹框提示几秒后,跳转到登陆首页或是点击确定之后直接跳转拦截用了this.$axios.interceptors.response页面上的弹框组件用了vux的组件vux地址:htt ...
- UML——Use Case Diagram(用例图)
用例图主要用来描述角色以及角色与用例之间的连接关系.说明的是谁要使用系统,以及他们使用该系统可以做些什么.一个用例图包含了多个模型元素,如系统.参与者和用例,并且显示这些元素之间的各种关系,如泛化.关 ...
- python之便携式mysql类和tornado mysql长链接
mymysql.py class MyMysql2(object): def __init__(self, host = '', user = '', passwd = '', db = '', po ...
- Codeforces Round #305 (Div. 2)D. Mike and Feet(单调栈)
题意 n个值代表n个熊的高度 对于size为x的group strength值为这个group(连续的几个熊)中熊的最小的height值 对于x(1<=x<=n) 求出最大的strengt ...
- Code::Blocks 免安装版本下载及配置
在编程的时候选择一款好用的IDE非常重要,对于初学者或需要开发项目的程序员来说更为重要,众多的IDE中 Code::Blocks 是一个不错的选择.Code::Blocks开源.版本多,并且还有免安装 ...
- Rust中的Trait
类似接口,但和php中的trait又有点不一样. pub trait Summary { fn summarize(&self) -> String; } pub struct NewA ...