zoukankan      html  css  js  c++  java
  • 2020.12.21---Stream的运用

    Stream流
    JDK1.8才有,依赖于lambda表达式。----->目的是为了解决查询的时候一次又一次的遍历苦恼

    步骤
    1.将集合A中的数据结果条件一,过滤到子集合B中
    2.将集合B里面的数据经过条件二筛选为子集合C

    Stream流常用API方法
    1.针对对象

    • Collection集合的子集合list或这Set
    • 数组
      2.使用步骤
      1.获得Stream流对象---->集合对象.stream();
      2.获得符合条件吗的流对象
      3.查看流里面的数据

    因为返回的都是Stream流对象所以可以进行链式调用

    Stream流思想概述
    就是按照我们的设计思想一步一步的去完后,
    每次完成之后返回一个流对象,继续调用后面的API方法
    是由一个流转换为另一个流

    对应方法:filter(过滤),maop(映射),skip(跳过),count(计数)

    使用流的三个步骤
    1.获取数据源(单列集合或数组)
    2.进行数据转换(转换为Sream流对象)----->数组或集合对象.stream()----或者-+----Stream.of(数组或集合对象)
    3.执行需要的操作,获得想要的结果
    注意
    没转换一次获得一个新的Stream,就可以使用2链式调用

    Stream和Collection的区别
    1.Stream中间都会转换为新的Stream对象,可以进行多个操作一起调用,有序的从前往后的运行
    2.内部迭代:以前的增强for循环或者iterator都是外部迭代,
    3.Stream是一个集合的函数模型,并不会存储数据,只需要按需求进行计算就可以

    Stream流是来自元素数据源的元素队列
    1.元素是特定类型的对象,线程一个队列,并不会存储数据,只是按照需求进行改进
    2.数据源--->是流的数据来源,可以是单列集合也可以是数组

    获取流对象:借助单列集合或者数组
    1.集合对象或者数组对象.stream()
    2.Stream.of(集合或者数组对象)

    Stream流对象的常用方法
    1.延迟方法:返回的事stream流对象
    2.终结方法: 返回的不Stream对象比如 count forEach

    forEach方法:forEach()
    括号内部是Consumer函数接口,主要是accept抽象方法主要是用来处理数据
    代码演示

    filter过滤方法:filter()
    通过【filter方法】将原有的流对象转换为符合条件的新的流对象
    小括号内部是Predicate函数式接口,主要是用内部的test(T t)方法。目的是为了保留满足条件的数据。
    代码演示

    Stream流运行图解

    Map映射:map()
    1.目的
    把一个流对选哪个里面的·数据转换为另一种形式保存在另一个流对象中
    函数式接口
    主要是运用了Function函数式接口里面的apply方法,把原流数据转换为另一种数据保存在另一个流对象里面
    代码演示

    统计流中元素个数:count()
    1.目的
    查看流里面有多少元素,返回值为long类型
    代码演示

    取用前几个流数据:Llimit(数字)
    Stream limit(long maxSize);---->如果超过了流数据个数最大值,不会报错只是不回家乡操作
    代码演示

    跳过前几个流对象
    Stream skip(long n);--->跳过前几个继续执行,返回后面几个流,如果超过数据个数最大值就返回哦空流
    代码演示

    concat,组合流
    1.目的
    把连个流合并在一起,如果数据类型不一致,前面就用通配符---->? extends Object
    2.代码演示

  • 相关阅读:
    Android在onCreate()中获得控件尺寸
    Java根据出生年月日获取到当前日期的年月日
    Oracle 取随机数
    filter,orderBy等过滤器
    ng-repeat 指令
    三元表达式、逻辑表达式 与 &&、||的妙用
    ng-switch 指令
    sublime text 3.0 安装 HTML-CSS-JS Prettify
    JS相关环境搭建:Nodejs、karma测试框架、jsDuck、Express
    关于VSS上的项目源码管理的注意问题
  • 原文地址:https://www.cnblogs.com/tushao/p/14176657.html
Copyright © 2011-2022 走看看