Class EasyStream<T>

java.lang.Object
org.miaixz.bus.core.center.stream.EnhancedWrappedStream<T,EasyStream<T>>
org.miaixz.bus.core.center.stream.EasyStream<T>
Type Parameters:
T - 对象类型
All Implemented Interfaces:
AutoCloseable, Iterable<T>, BaseStream<T,Stream<T>>, Stream<T>, TerminableWrappedStream<T,EasyStream<T>>, TransformableWrappedStream<T,EasyStream<T>>, WrappedStream<T,EasyStream<T>>

public class EasyStream<T> extends EnhancedWrappedStream<T,EasyStream<T>>
单元素的扩展流实现。基于原生Stream进行了封装和增强。 作者经对比了vavr、eclipse-collection、stream-ex以及其他语言的api,结合日常使用习惯,进行封装和拓展 Stream为集合提供了一些易用api,它让开发人员能使用声明式编程的方式去编写代码。

中间操作和结束操作

针对流的操作分为分为中间操作结束操作, 流只有在结束操作时才会真正触发执行以往的中间操作中间操作

  • 无状态中间操作: 表示不用等待 所有元素的当前操作执行完 就可以执行的操作,不依赖之前历史操作的流的状态;
  • 有状态中间操作: 表示需要等待 所有元素的当前操作执行完 才能执行的操作,依赖之前历史操作的流的状态;
结束操作
  • 短路结束操作: 表示不用等待 所有元素的当前操作执行完 就可以执行的操作;
  • 非短路结束操作: 表示需要等待 所有元素的当前操作执行完 才能执行的操作;

串行流与并行流

流分为串行流并行流两类:
  • 串行流:针对流的所有操作都会通过当前线程完成;
  • 并行流:针对流的操作会通过拆分器Spliterator拆分为多个异步任务ForkJoinTask执行, 这些异步任务默认使用ForkJoinPool线程池进行管理;
不同类型的流可以通过WrappedStream.sequential()WrappedStream.parallel()互相转换。
Since:
Java 17+
Author:
Kimi Liu
See Also: