java - 反应器过滤掉通量来自列表
问题描述
假设我们有
List<String> list
包含"A", "B", "C", "D"
Flux<String> flux
包含"A", "B"
有没有办法从列表中过滤掉通量?换句话说,从列表中减去通量,结果应该是"C", "D"
。
查看reactor的文档,filterWhen
似乎是最接近的,但它只重播第一个匹配条件的元素,所有后续匹配都将被忽略。
对于 List 或 Collections,这可以在非反应性世界中轻松实现,例如从另一个 arrayList 中减去一个 arrayList。
解决方案
您可能正在寻找使用该collectList()
方法。
Flux::collectList
将采用 aFlux<String>
并发出 a Mono<List<String>>
。
这将使您能够方便地运行在该数据集上运行所需的任何集合比较操作。
有了它,您可以提供一个.map()
操作并将其转换为您想要的结果。
Mono<List<String>> monoWithRemovedElements = flux.collectList()
.map(fluxTurnedIntoList -> /*(subtract array list)*/)
如果您想将其扇出到 Flux 中,您可以使用该Mono::flatMapMany
方法。
Flux<String> fluxWithRemovedElements = monoWithRemovedElements
.flatMapMany(list -> Flux.fromIterable(list))
推荐阅读
- javascript - 将处于 redux 状态的对象存储为值
- r - 同一绘图上的多个 Pen 的游行图
- python - pandas - 根据列值复制每一行'n'次
- c++ - 在C++中继承时,受保护的方法可以成为私有方法吗?
- android - 数据的 getContentResolver() 值为 null 但正确接收名称
- python - 构建python代码以通过subprocess.Popen运行消息
- dialogflow-es - 如何处理同音异义词
- c - realloc():两次计算后下一个大小无效
- azure-devops-rest-api - 创建发布 JSON 正文在 Postman 中有效,但在 PowerShell 脚本中无效
- python - 我怎样才能只得到姓名和联系电话?