如何 return Observable.empty() 如果 observable.filter().first() return 什么都没有?

How to return Observable.empty() if observable.filter().first() returns nothing?

我在 RxJava 中有一个函数,它试图根据条件找到一个事物,如果成功,它会转换并 return 将其作为 Observable。如果找不到任何东西,我想 return Observable.empty() 因此没有第一个。 我不确定这一点,但我认为如果过滤器过滤掉 Observable 中的每个元素,结果无论如何都会是 Observable.empty()(没有 firstElement())。

void Observable<Thing> transformFirst(Observable<Thing> things,Predicate<Thing> condition){
  return things
    .filter(condition)
    .firstElement()
    .map(firstThing ->{...do sg...})
}

编辑:

我的问题是 firstElement() return 是一个 Maybe<Thing>,我不知道如何在 filter(condition) 过滤掉时将其变成 Observable.empty()一切(condition 对每个 thing 评估为假)

您可以如下所示添加 switchIfEmpty(),

return things
    .filter(condition)
    .switchIfEmpty(Observable.empty())
    .firstElement()
    .map(firstThing ->{...do sg...})