1.filter(筛选):接受Lanbda,从流中排出某些元素
2.map(提取):接受一个Lanbda,将元素转换成其他形式或提取信息
3.limit(截断):截断流,使其元素不超过给定数量
4.distinct:筛选掉重复的元素
4.collect:将流转换为其他形式
注:流只能消费一次
5.使用Collection接口需要用户去做迭代(比如用for-each),这称为外部迭代。 相反, Streams库使用内部迭代
6.Streams库的内部迭代可以自动选择一种适 合你硬件的数据表示和并行实现
7.可以连接起来的流操作称为中间操作,关闭流的操作称为终端操作
8.使用流
流的使用一般包括三件事:
一个数据源(如集合)来执行一个查询;
一个中间操作链,形成一条流的流水线;
一个终端操作,执行流水线,并能生成结果。
中间操作
操作 | 类型 | 返回类型 | 操作参数 | 函数描述符 |
filter | 中间 | Stream<T> | Predicagte<T> | T->boolean |
map | 中间 | Stream<R> | Function<T,R> | T->R |
limit | 中间 | Stream<T> | ||
sorted | 中间 | Stream<T> | Comparator<T> | (T,T)->int |
distinct | 中间 | Stream<T> |
终端操作
操作 | 类型 | 目的 |
forEach | 终端 | 消费流中的每个元素并对其应用 Lambda。这一操作返回 void |
count | 终端 | 返回流元素的个数。这一操作返回long |
collect | 终端 | 把流归约成一个集合,比如List、Map甚至是Integer |