Stream
Stream的创建方式
- 通过Collection系列集合提供
- 通过Arrays中的静态方法获取数组流
- 通过Stream类中的静态方法of()
- 创建无限流
- 迭代
- 生成
中间操作
- 筛选与切片
- filter
- limit
- skip
- distinct 通过hashcode(),equals()进行去重
- 映射
- map 将元素转换成其他形式或提取信息。map中的Function本身也会返回一个流。
- flatMap 会整合Function本身返回的流。
- 排序
- sorted() 自然排序
- sorted(Comparator) 定制排序,指定Comparator
终止操作
- 查找与匹配
- allMatch 检查是否匹配所有元素
- anyMatch 检查是否至少匹配一个元素
- nonMatch 检查是否没有匹配所有元素
- findFisrt() 返回第一个元素
- findAny 返回当前流中的任意元素
- count 返回流中的元素的个数
- max(Comparator) 返回流中的最大值
- min(Comparator) 返回流中的最小值
- 归约
- reduce(T, BinaryOperator) 将流中的元素反复结合起来,得到一个新值。
- 收集
- collect(Collector) 将流转换为其他形式,包括转换,分组,分区等
并行流与串行流
了解使用Fork/Join框架 Stream可以使用parallel()与sequential()切换并行流与顺序流。
特点
- 惰性求值
- 内部迭代