FlowSynchronouslyIterateCollectable

FlowSynchronouslyIterateCollectable 接口,为处理流数据提供了一套方法。 扩展自 SynchronouslyIterateCollectable 接口。

FlowSynchronouslyIterateCollectable 直接引用操作 Flow , 请尽可能避免对 FlowSynchronouslyIterateCollectable 的重复操作。

注意:接口实现中,一些与挂起函数相关的异步操作会通过 runInNoScopeBlocking 函数转化为同步操作,这可能会造成一定的性能损耗。

Parameters

T

泛型参数,表示集合中元素的类型。

Functions

Link copied to clipboard
abstract override fun asFlow(): Flow<T>

将数据转化为 Flow流。

Link copied to clipboard
abstract suspend override fun collect(collector: Action<T>)

对每个元素执行指定的操作 (Action)。

Link copied to clipboard
open override fun collectAsync(scope: CoroutineScope, collector: Action<T>): Async<Unit>

异步地执行收集操作。

Link copied to clipboard
abstract override fun forEach(action: Action<T>)

对每个元素执行指定的操作 (Action)。

Link copied to clipboard
abstract operator override fun iterator(): Iterator<T>
abstract fun iterator(produceScope: CoroutineScope): Iterator<T>

获取集合的迭代器。

Inherited functions

Link copied to clipboard
@JvmName(name = "valueOf")
fun <T> Iterable<T>.asCollectable(): IterableCollectable<T>

Iterable 转换为 IterableCollectable 的函数.

Link copied to clipboard
fun <T : Any> Collectable<T>.asFlux(): Flux<T>

Collectable 转化为 Flux。 需要环境中存在 kotlinx-coroutines-reactor 依赖。

Link copied to clipboard
fun <T> Collectable<T>.asStream(produceScope: CoroutineScope? = null): Stream<T>

将一个 Collectable 转化为 Stream。 如果是 IterableCollectableSequenceCollectable, 则会使用它们的 asSequence 进行转化, 否则会使用 Collectable 中合适的方法进行适当的阻塞转化

Link copied to clipboard

将一个 Collectable 转化为可以提供同步迭代能力的迭代器 SynchronouslyIterateCollectable

Link copied to clipboard
fun <T, R> Collectable<T>.collect(collector: Collector<T, *, R>): R

使用 Collector 阻塞地收集 Collectable 中的元素。

Link copied to clipboard
fun <T, R> Collectable<T>.collectAsync(scope: CoroutineScope? = null, collector: Collector<T, *, R>): CompletableFuture<R>

使用 Collector 异步地收集 Collectable 中的元素。 如果 scopenull,则会视情况使用 GlobalScope 或使用 CompletableFuture.supplyAsync

Link copied to clipboard
open fun forEach(p0: Consumer<in T>)
Link copied to clipboard
Link copied to clipboard
abstract fun toList(): List<T>

转化或收集为一个 List

Link copied to clipboard
fun <T> Collectable<T>.toList(): List<T>

Collectable 阻塞地收集为 List。 会根据类型适当地优化与避免阻塞挂起操作。

Link copied to clipboard

Collectable 异步地收集为 List。 如果 scopenull,则会视情况使用 GlobalScope 或使用 CompletableFuture.supplyAsync

Link copied to clipboard
open fun <R> transform(transformer: SuspendReserve.Transformer<Flow<T>, R>): R

使用 SuspendReserve.Transformerflow 的值进行转化处理。 更多说明参考全量参数的重载函数。

open fun <R> transform(scope: CoroutineScope, context: CoroutineContext, transformer: SuspendReserve.Transformer<Flow<T>, R>): R

使用 SuspendReserve.Transformerflow 的值进行转化处理。 例如在 JVM 中,可以使用 SuspendReserves.flux() 转化为 reactor.core.publisher.Flux 或使用 SuspendReserves.list() 转化为 List

Link copied to clipboard
fun <T, R> Collectable<T>.transform(scope: CoroutineScope = GlobalScope, transformer: SuspendReserve.Transformer<Flow<T>, R>): R

使用 SuspendReserve.TransformerCollectable.asFlow 的结果进行转化, 例如可以使用 SuspendReserves.flux() 转化为 FluxSuspendReserves.list() 转化为 List。 注意:部分转化器可能会要求运行时存在一些依赖,请注意参考它们的注释与说明。