Stream相关知识点

这里写目录标题

  • Stream流
    • 体验Stream流
    • Stream流的常见生成方式
      • 流程
      • 分类(默认方法、map体系集合间接生成、数组of方法)
        • 具体操作
    • Stream流常见中间操作之filter
      • 简介
      • 具体操作
    • Stream流常见中间操作之limit&skip
      • 简介
      • 具体操作
    • Stream流常见中间操作之concat&distinct
      • 简介
      • 具体操作
    • Stream流常见中间操作之sorted
      • 简介
      • 具体代码
    • Stream流常见中间操作之map&mapToInt
      • 简介
      • 具体操作
    • Stream流常见终结操作
      • 简介
      • 具体操作
    • Stream流元素收集到集合
      • 简介
      • 具体操作

Stream流

体验Stream流

Stream相关知识点_第1张图片

Stream流的常见生成方式

流程

Stream相关知识点_第2张图片

分类(默认方法、map体系集合间接生成、数组of方法)

Stream相关知识点_第3张图片

具体操作


这里Map集合体系是间接生成Stream流,通过利用map集合对象调用方法生成“键、值、或者键值对象”的集合,利用这些集合生成流

数组则利用Stream的静态方法来生成流,利用of方法

Stream流常见中间操作之filter

(Stream流的中间操作可以理解为之前的调用自定义方法的操作)

简介

Stream相关知识点_第4张图片
filter可以理解为之前的自定义方法,参数是一个Predicate接口,接口里的抽象方法是text(T t),因为抽象方法的参数是一个泛型,所以main里面lambda表达式的参数可以自行设置,主要是由所调用Stream流的数据类型决定

且main方法里的利用Stream流调用方法时,可以看作之前的调用自定义方法,参数可以传入lambda表达式

具体操作

Stream相关知识点_第5张图片
Stream可以理解为流,所以无需定义直接调用即可

注意,s.startWith()方法的功能是 返回开头是“xxx”的字符串

Stream流常见中间操作之limit&skip

简介

Stream相关知识点_第6张图片

具体操作

Stream相关知识点_第7张图片

注意可以结合使用,也就是先调用一个中间操作之后,再在此基础上,调用另一个中间操作
原因如下
Stream相关知识点_第8张图片
生成流之后,调用流的方法,返回的还是一个流,所以可以链式调用

Stream流常见中间操作之concat&distinct

简介

Stream相关知识点_第9张图片

具体操作

Stream相关知识点_第10张图片
特别注意 合并流方法 也就是cancat方法,是一个静态方法,直接用“Stream”来调用就可以
注意 distinct方法无参数,是一个功能型方法

Stream流常见中间操作之sorted

简介

在这里插入图片描述

具体代码

Stream相关知识点_第11张图片
注意看注释里面需求1和需求2的代码 需求1是自然排序,也就是按照字母顺序排序,需求2是按照自己写的排序器排序

而对于注释行下面的代码块,是优化了需求2,其中compareTo方法是字符串的自然排序方法

Stream流常见中间操作之map&mapToInt

简介

Stream相关知识点_第12张图片
注意 某个流调用map之后 map会自动对流的每个元素都进行操作,也就是自带遍历功能

具体操作

Stream相关知识点_第13张图片
map是一个Stream流的一个方法,可以看作是自定义方法,这里只不过是Java已经替我们定义好了,直接调用即可(其他Stream流方法同理),而map参数列表是一个函数式接口,所以,lambda表达式的参数与接口中的方法对应,由上图可知,接口中是一个泛型方法,所以lambda表达式的参数可以任意设置,返回值也是泛型,所以返回值也可以任意设置,只不过需要在lambda表达式代码块做一些操作,完成参数类型到目标类型的转换

Stream流常见终结操作

简介

Stream相关知识点_第14张图片

具体操作

Stream相关知识点_第15张图片

Stream流元素收集到集合

简介

Stream相关知识点_第16张图片

具体操作

Stream相关知识点_第17张图片
collect方法的参数是一个接口,接口的实例化子类是collectors.toList()方法

Stream相关知识点_第18张图片
Stream相关知识点_第19张图片
注意这里 需求5 这里用到了数组生成流的方式,是用Stream.of(数组名),这样就得到了一个流,在这之后可以对这个流进行一些操作,比如图中的过滤操作

注意需求6
生成map集合,仍然是流调用collect方法,参数:一个接口(需要传入一个带有两个子参数的collectors实例化方法),两个子参数分别为两个函数式接口,这里可以传入两个lambda表达式

你可能感兴趣的:(java)