Notes
Search…
⌃K

Stream

Stream 相当于高级版的 Iterator,可以通过 Lambda 表达式对集合进行各种非常便利、高效的聚合操作(Aggregate Operation),大批量数据操作(Bulk Data Operation)。
在 Java 8 中,Collection 接口新增了两个 Stream 相关的接口:
default Stream<E> stream() {
return StreamSupport.stream(spliterator(), false);
}
default Stream<E> parallelStream() {
return StreamSupport.stream(spliterator(), true);
}
Stream 的操作可以按照如下分类:
  • 中间操作(Intermediate operations): 对操作进行记录,只返回一个流,不会进行计算。
    • 无状态(Stateless):元素处理不受之前元素的影响。
    • 有状态(Stateful):只有拿到所有元素才能继续。
  • 终结操作(Terminal operations):触发计算。
    • 短路(Short-circuiting):遇到某些符合条件的元素就可以得到最终结果。
    • 非短路(Unshort-circuiting):必须处理完所有元素才能得到最终结果。
  • BaseStream:定义了流的基本方法,如 isParallel。
  • Stream:定义了流的常用操作,如 map、filter。
  • ReferencePipeline:定义了 Head、StatelessOp、StatefulOp 内部类来组装各种操作流。
    • Head:定义数据源操作,比如调用 stream() 方法。
  • Sink:定义每个 Stream 操作之间关系的协议。
Last modified 3yr ago