Stream API
- 一个数据源获取一个流
- 中间操作链对数据源的数据进行处理
- 一个终止操作,执行中间操作链,并产生结果
- 三个操作步骤:
- 创建stream
- 四种方法创建stream
- 通过Collection系列集合提供的stream()【串行流】和parallelStream()【并行流】
- 通过Arrays中的静态方法stream()获取数组流
- 通过Stream类中的静态方法of()
- 创建无限流
- 迭代 itreate()
- 生成 generate()
- 四种方法创建stream
- 中间操作
- 筛选与切片
- filter --- 接收lambda,从流中排除某些元素
- limit --- 截断流,使其元素不超过给定数量
- skip --- 跳过元素,返回一个扔掉了前n个元素的流,若流中元素不足n个,则返回一个空流,与limit(n)互补
- distinct ---- 筛选,通过流所生成的元素的hashcode()和equals()去除重复元素
- 映射
- map --- 接收lambda,将元素转换成其他形式或提取信息,该函数会被应用到每个元素上,并将其映射下还能一个新的元素
- flatMap ---- 接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成另外一个流
- 排序
- sorted() --- 自然排序
- sorted(Conparator com) --- 定制排序
- 筛选与切片
- 终止操作
- allMatch ---- 检查是否匹配所有元素
- anyMatch ---- 检查是否至少匹配一个元素
- nonaMatch ---- 检查是否没有匹配所有元素
- findFirst ---- 返回第一个元素
- findAny ---- 返回当前流中任意元素
- count ---- 返回流中元素的总个数
- max ----- 返回流中最大值
- min ---- 返回流中最小值
- 归约
- reduce(T identity,BinaryOperator)/reduce(BinaryOperator) ---- 可以将流中元素反复结合起来,得到一个值
- collect ---- 将流转换为其他形式,接收一个Collector接口的实现,用于给stream中元素做汇总的方法
- 创建stream