tushao
不忘初心,无限更新流学习单位,总结每日学习资料,总结写代码中遇到的问题

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.代码演示

posted on 2020-12-23 08:54  是涂绍啊  阅读(95)  评论(0编辑  收藏  举报