首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactiveX中带有条件的ReactiveX第一算子

ReactiveX中带有条件的ReactiveX第一算子
EN

Stack Overflow用户
提问于 2017-12-12 10:12:49
回答 1查看 381关注 0票数 0

我是reactiveX的新手。通过在我的gradle模块文件中添加以下行,我在我的项目中包括了:

代码语言:javascript
复制
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.7'

现在我试着开始使用它。作为第一次尝试,我尝试使用reactiveX来检查两个列表是否至少包含一个公共元素。我已经从第一个列表中创建了一个可观察到的元素,然后我希望根据第二个列表中包含的元素列表测试每个元素。我用这种方式成功地实现了这个操作

代码语言:javascript
复制
public boolean hasAnyType(TYPE[] types){
    Observable<TYPE> o = Observable.fromArray(types);
    return !o.filter(type -> hasType(type)).isEmpty().blockingGet();
}

但是,如果我的理解是正确的,那么filter运算符将测试由可实现对象生成的所有元素,而我只想知道是否找到了匹配的元素。当找到匹配时,迭代所有元素是无用的。我看到了操作员first应该做我需要做的事情

只发出可观察到的第一项(或满足某种条件的第一项)。

试图在我的Android项目中使用它,看起来在库中没有条件版的操作符。是真的吗?有没有办法让它在中使用?如果不是的话,哪种方法才是解决问题的正确方法?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-12 15:57:53

谢谢@akarnokdany操作符工作得很好。我的最后代码是

代码语言:javascript
复制
public boolean hasAnyType(TYPE[] types){
    Observable<TYPE> o = Observable.fromArray(types);
    return o.any(this::hasType).blockingGet();
}

为了完整起见,我已经测试了以前的实现,即使akarnokd提出的实现要好得多,它的工作方式也是一样的。测试被重复,直到找到一个结果,然后返回结果,而不测试任何其他元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47770025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档