所以假设我有一个Flux<String> firstLetters
包含"A", "B", "C", "D"
和Flux<String> lastLetters
包含"X", "Y", "Z"
我有一个 Flux 包含许多:
data class Example(val name: String)
从整体来看,Flux<Example>
我想将元素拆分为两个变量:一个Flux<Example>
包含所有内容,name IN ("A", "B", "C", "D")
第二个Flux<Example>
包含名称IN ("X", "Y", "Z")
并将这两个 Fluxes 保存为两个变量。
是否可以在一个流程中这样做而不先为firstLetters
然后为lastLetters
是否可以在一个流程中这样做,而无需先对 firstLetters 然后对 lastLetters 执行相同的逻辑
由于这一问题表示我不这么认为,因为你必须给每个元素多次处理(每个值一个就行了,看它是否包含值你所需要的。)你可以调用cache()
的Flux
,虽然保证这些值仅检索一次,或完全转换为另一种数据结构。
鉴于您无论如何都必须重新评估,并假设您仍然想坚持使用原始Flux
对象,filterWhen()
并且any()
可以在这里很好地使用:
Flux<Example> firstNames = names.filterWhen(e -> firstLetters.any(e.name::contains));
Flux<Example> lastNames = names.filterWhen(e -> lastLetters.any(e.name::contains));
Predicate
如果您担心那里的代码重复,您当然可以将其提取到一个单独的方法中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句