Flow
一个异步数据流,可以按顺序发出多个值,并正常完成或因异常而终止。
Flow 类似于集合或序列,但它的值是异步计算的。
冷流 (Cold Flow)
默认情况下,Flow 是“冷”的。这意味着在调用一个终端操作符(如 collect)之前, Flow 内部的代码不会执行。每次调用终端操作符都会重新执行一遍 Flow 的构建逻辑。
操作符
中间操作符: 如
map,filter等。它们本身不执行任何操作,只是构建一个操作链,并返回一个新的 Flow。终端操作符: 如
collect,first,toList等。它们会触发整个 Flow 链的执行(称为“收集”),并返回一个最终结果。
Author
M8Test, [email protected], https://m8test.com
Parameters
Flow 发出的值的类型。
Functions
终端操作符,用于检查 Flow 中是否所有元素都满足给定的条件 predicate。
对 ObjectWrapper
终端操作符,用于检查 Flow 中是否至少有一个元素满足给定的条件 predicate。
对 ObjectWrapper
捕获上游 Flow 中发生的异常。
收集此 Flow 发出的所有值。
返回 Flow 中的元素数量。
过滤掉 连续重复 的元素,仅当相邻两次值通过 areEquivalent 比较返回 true 时视为重复。
根据 keySelector 提取的“键”进行 相邻去重,键相同即视为重复。
返回一个过滤掉所有 null 值的 Flow。
返回此 Flow 中满足给定条件 predicate 的第一个值,然后取消 Flow 的收集。 如果没有元素满足条件,将会抛出 NoSuchElementException 异常。
返回此 Flow 中满足给定条件 predicate 的第一个值,如果 Flow 中没有元素满足条件则返回 null。
返回此 Flow 发出的最后一个值。 如果 Flow 为空,将会抛出 NoSuchElementException 异常。
返回此 Flow 发出的最后一个值,如果 Flow 为空则返回 null。
收集 Flow,但忽略所有发出的值,仅启动 Flow 的执行。
对 Flow 中的每个元素应用给定的转换函数,并返回一个只包含非 null 转换结果的新 Flow。
终端操作符,用于检查 Flow 中是否没有元素满足给定的条件 predicate。
在 Flow 收集完成时(无论正常完成还是因异常终止)执行给定的 action。
与 runningFold 类似,但使用流的第一个元素作为初始累积值。
返回此 Flow 发出的唯一一个值。 如果 Flow 为空,会抛出 NoSuchElementException。 如果 Flow 包含多个元素,会抛出 IllegalArgumentException。
返回此 Flow 发出的唯一一个值,如果 Flow 为空或包含多个元素,则返回 null。
如果 ObjectWrapper
如果 ObjectWrapper
将 Flow 中的每个元素包装成一个 IndexedValue 对象,该对象包含元素的原始值和它在流中的索引(从0开始)。