stream
特点
- 不改变原来的数据源,会将操作后的数据保留到另一个对象中
- 惰性求值,流在中间处理过程中,只是对操作进行记录,而不会立即执行
常用方法
创建流
- stream() 获取一个顺序流
- parallelStream() 获取一个并行流
中间操作
筛选与切片
- filter 过滤流中的某些元素
- limit 获取n个元素
- skip 跳过n元素,配合limit 可实现分页
- distinct 通过流元素的hashCode跟equals去重元素
映射
- map 接收一个函数作为参数,将每个元素映射为一个新的元素
- flatmap 接收一个函数作为参数<具体用法之后填>
- peek 跟map很像,只是方法没有返回值,为Consumer表达式
排序
- sorted 自然排序,流元素得实现Comparable接口
- sorted(Comparator): 定制排序
匹配与聚合
- allMatch 接收一个Predicate函数,当流中每个元素都符合该断言才返回true
- noneMatch 当流中每个元素都不符合该断言时才返回true
- anyMatch 当流中有一个满足该断言则返回true
- findFirst 返回流第一个元素
- findAny 返回流中任意元素
- count 返回流中元素的总个数
- max 返回流中元素最大值
- min 返回流中元素最小值
收集操作
- collect 接收一个Collector实例,将流中元素收集成另一个数据结构