distinct Until Changed By
根据 keySelector 提取的“键”进行 相邻去重,键相同即视为重复。
等价于先映射到键,再用默认 == 比较键是否发生变化;当键是集合或自定义对象时,可配合数据类重写 equals。
用法示例
data class Order(val orderId: String, val amount: BigDecimal)
ordersFlow
.distinctUntilChangedBy { it.orderId } // 仅 orderId 变化时才发射
.collect { println(it) }Content copied to clipboard
注意
只比较 相邻 键,不会保留历史键集合。
键的等价性使用
==判断,建议对复杂类型使用 数据类 或 值类。若需 全局键去重 请自行维护
MutableSet<K>并封装为 Flow 操作符扩展。
Return
新 Flow,仅当相邻键不相等时向下游发射元素。