亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從另一個 Flux 中排除 Flux 中的所有元素

如何從另一個 Flux 中排除 Flux 中的所有元素

鴻蒙傳說 2024-01-05 14:41:46
我有兩個Fluxs,一個用于成功元素,另一個用于保存錯誤元素Flux<String> success= Flux.just("Orange", "Apple", "Banana","Grape", "Strawberry"); Flux<String> erroneous = Flux.just("Banana","Grape",);我如何過濾第一個Flux以排除第二個中的所有元素?
查看完整描述

1 回答

?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

您可能希望考慮將其收集Flux到一個集合中,緩存該集合,然后filterWhen按如下方式使用:


Mono<Set<String>> erroneousSet = erroneous.collect(Collectors.toSet()).cache();

Flux<String> filtered = success.filterWhen(v -> erroneousSet.map(s -> !s.contains(v)));

給出:


Orange

Apple

Strawberry

erroneous這不是最簡潔的解決方案(見下文),但它可以緩存內容。在這個特定的例子中,這是一個沒有實際意義的問題,但如果這是一個現實世界的情況(不使用Flux.just()),那么erroneous可以在每個訂閱上重新計算,并且最終在性能方面可能會非常昂貴(并且不必要)。


或者,如果上述內容在您的用例中確實并不重要,filterWhen()并且hasElement()可以更簡潔地使用,如下所示:


success.filterWhen(s -> erroneous.hasElement(s).map(x->!x))

或者使用reactor-extra:


success.filterWhen(s -> BooleanUtils.not(erroneous.hasElement(s)))


查看完整回答
反對 回復 2024-01-05
  • 1 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號