Rx java 如果Observable.filter().first()不返回任何内容,如何返回Observable.empty()?

Rx java 如果Observable.filter().first()不返回任何内容,如何返回Observable.empty()?,rx-java,rx-java2,reactivex,Rx Java,Rx Java2,Reactivex,我在RxJava中有一个函数,它试图根据一个条件找到一个对象,如果成功,它将转换并返回一个可观察的。我想返回Observable.empty()。 我不确定这一点,但我认为如果过滤器过滤掉可观察的中的每个元素,结果将是可观察的.empty()(没有firstElement()) void Observable transformFirst(可观察事物,谓词条件){ 归还物品 .过滤器(条件) .firstElement() .map(第一件事->{…do sg…}) } 编辑: 我的问题是fi

我在RxJava中有一个函数,它试图根据一个条件找到一个对象,如果成功,它将转换并返回一个
可观察的
。我想返回
Observable.empty()。
我不确定这一点,但我认为如果过滤器过滤掉
可观察的
中的每个元素,结果将是
可观察的.empty()
(没有
firstElement()

void Observable transformFirst(可观察事物,谓词条件){
归还物品
.过滤器(条件)
.firstElement()
.map(第一件事->{…do sg…})
}
编辑:

我的问题是
firstElement()
返回一个
可能
,我不知道如何将其转换为
可观察的.empty()
过滤器(条件)
过滤掉所有内容时(
条件
对每件
事情
)可以添加switchIfEmpty(),如下所示

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

things.filter(condition)
其中的
条件总是计算为
false
Observable.empty()
有何不同?我不认为这有什么不同,我相信它会是
Observable.empty()
。但是当我做
事情时。filter(condition).firstElement()
它会返回一个
可能
,我不知道如何将它转换成
可观察的.empty()
为什么要使用
firstElement()
呢?也许你应该使用
。首先(condition)
然后…
可观察的.empty()
是一个恒定的空源,与任意的
可观察的
不同,它被过滤后没有项目。为什么不继续使用
Maybe
,这表示您可能有或可能没有物品。您最多可以通过
toObservable()
将其转换回可观察的
Observable
return things
    .filter(condition)
    .switchIfEmpty(Observable.empty())
    .firstElement()
    .map(firstThing ->{...do sg...})