流分类
- stream:顺序流,由主线程按顺序执行操作,数据有序。
- paralleStream:并行流,多线程并行执行,数据无序。
匹配/包含:find / match
- 匹配:根据过滤条件 匹配 第一个或任意一个元素
- 包含:判断是否 包含 符合特定条件的元素
筛选:filter
- 按照自定义规则校验流中元素,将 符合条件 的元素提取到新的流中。
聚合:max / min / count
- max/min:可用函数 compareTo、Comparator等 比较常量集合 和 对象集合
- count:计算流中元素个数
映射:map / flatMap
- map:接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
- flatMap:接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流。
归约:reduce
- 归约,也称缩减,顾名思义,是把一个流缩减成一个值,能实现对集合求和、求乘积和求最值操作。
收集:collect
- 把一个流收集起来,最终可以是收集成一个值也可以收集成一个新的集合
- collect主要依赖java.util.stream.Collectors类内置的静态方法。
统计:
- 注释:在collect收集方法中 通过Collectors调用统计方法
- 功能:可以 计数、平均值、最值、求和、求以上所有等
分区、分组:partitioningBy / groupingBy
- 注释:分区 分组都作用于collect收集方法中 通过Collectors调用
- 分区:根据自定义条件,分为false,true两个map
- 分组:根据对象中某个字段分组,可以根据多个字段分组
接合:joining
- 注释:作用于collect收集方法中 通过Collectors调用
- 可以将stream中的元素用特定的连接符(没有的话,则直接连接)连接成一个字符串。
归约:reducing
- 注释:作用于collect收集方法中 通过Collectors调用
- 相比于stream本身的reduce方法,增加了对自定义归约的支持。
排序:sorted
- 注释:通过内置Comparator.comparing进行排序,倒序追加reversed方法
- 可以根据对象中某字段排序
合并,去重,跳过:concat / distinct / skip / limit
- concat:合并两个流 Stream.concat
- distinct:去重
- skip:跳过前n个数据,skip(n)
- limit:取前n个数据 或 n1至n2的数据:limit(n) || limit(n1,n2)