新特性里面为什么要加入流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的更多相关文章

  1. java8新特性——Stream API

    Java8中有两大最为重要得改变,其一时Lambda表达式,另外就是 Stream API了.在前面几篇中简单学习了Lambda表达式得语法,以及函数式接口.本文就来简单学习一下Stream API( ...

  2. Java8新特性 - Stream API

    Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找.过滤和映射数据等操作.使用Stream API对集合进行操作,就类似与使用SQL执行的数据库 ...

  3. Java8 新特性 Stream Api 之集合遍历

    前言 随着java版本的不断更新迭代,java开发也可以变得甜甜的,最新版本都到java11了,但是后面版本也是不在提供商用支持,需要收费,但是java8 依然是持续免费更新使用的,后面版本也更新很快 ...

  4. JDK1.8新特性——Stream API

    JDK1.8新特性——Stream API 摘要:本文主要学习了JDK1.8的新特性中有关Stream API的使用. 部分内容来自以下博客: https://blog.csdn.net/icarus ...

  5. Java8 新特性 Stream 非短路终端操作

    非短路终端操作 Java8 新特性 Stream 练习实例 非短路终端操作,就是所有的元素都遍厉完,直到最后才结束.用来收集成自己想要的数据. 方法有: 遍厉 forEach 归约 reduce 最大 ...

  6. Java8 新特性 Stream 短路终端操作

    短路终端操作 Java8 新特性 Stream 练习实例 传入一个谓词,返回传为boolean,如果符合条件,则直接结束流. 匹配所有 allMatch 任意匹配 anymMatch 不匹配 none ...

  7. Java8 新特性 Stream 无状态中间操作

    无状态中间操作 Java8 新特性 Stream 练习实例 中间无状态操作,可以在单个对单个的数据进行处理.比如:filter(过滤)一个元素的时候,也可以判断,比如map(映射)... 过滤 fil ...

  8. Java8 新特性 Stream 练习实例

    练习实例 配合Java8 新特性 Steam() API 使用 //没有写get set 构造方法 public class Sku { private Integer skuId; private ...

  9. 这可能是史上最好的 Java8 新特性 Stream 流教程

    本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...

随机推荐

  1. iOS开发之--iPhone X 适配:MJRefresh上拉加载适配

    问题如下图: 出现原因,phoneX系列手机下方多了34像素的工作区域,所以需要对x全系列手机坐下适配, 解决如下: self.tableView.mj_footer.ignoredScrollVie ...

  2. Retrofit+Okhttp+RxJava打造网络请求之Post

    之前一直在准备Android培训的事情,所幸的是终于完事啦,在这过程中真的发现了自身无论从沟通能力还是技术能力上很多的不足,就用一句 路漫漫其修远兮,吾将上下而求索 来勉励自己吧.之前也在项目上用上O ...

  3. cpu开多少线程合适(转)

    影响最佳线程数的主要因素: 1.IO 2.CPU 根据公式:服务器端最佳线程数量=((线程等待时间+线程cpu时间)/线程cpu时间) * cpu数量 一般来说是IO和CPU.IO开销较多的应用其CP ...

  4. 起步:SpringBoot

    pom.xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spr ...

  5. Linux驱动开发常用调试工具---之内存读写工具devmem和devkmem【转】

    转自:https://blog.csdn.net/gatieme/article/details/50964903 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...

  6. Bayesian Optimization使用Hyperopt进行参数调优

    超参数优化 Bayesian Optimization使用Hyperopt进行参数调优 1. 前言 本文将介绍一种快速有效的方法用于实现机器学习模型的调参.有两种常用的调参方法:网格搜索和随机搜索.每 ...

  7. jmeter压测学习8-压测带token的接口

    前言 工作中我们需要压测的接口大部分都是需要先登陆后,带着token的接口(或者带着cookies),我们可以先登陆获取token再关联到下个接口. 比如我现在要压测一个修改用户的个人信息接口,每个用 ...

  8. django rest framework 过滤 lim分页

    一.过滤 1.首先引用diango 自带的过滤配置 2.导入模块 from django_filters.rest_framework import DjangoFilterBackend from ...

  9. appium python demo

    #coding=utf-8from appium import webdriverdesired_caps={}desired_caps["platformName"]=" ...

  10. day37_8_21表的查询

    一.语法 表的查询一般使用select关键字,配合where筛选.顺序如下: # 先后顺序 from where select 二.where约束条件 首先先建立表: create table emp ...