我有两个可观察数据发出相同的数据类型。我需要合并它们
for
现在我需要将这两个observable合并为一个,但是我不需要让两个数组合并我需要使用自定义函数来合并它们,例如我想要排除具有相同id的重复帖子
是否可以使用RxJava实现此目的?
由于
答案 0 :(得分:0)
我将在此处做出一些假设,因为您尚未发布Post
实施内容。我们假设我们有一个帖子列表:List<Post>
。
如果您想自己完成所有脏合并工作,只需使用Single.zip(...)
Single.zip(getRecentPosts(),
getPopularPosts(),
(posts1, posts2) -> myCustomMergeMethod(posts1, posts2))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
目前还不清楚您想要对自定义合并做什么...但是,您几乎总能使用rx转换完成所有工作:
getRecentPosts().mergeWith(getPopularPosts())
.flatMapIterable(posts -> posts)
.distinct(post -> post.getId())
.toList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
以上将会做你要求的一些事情:
mergeWith(...)
Post
flatMapIterable(...)
排放
distinct(...)
toList()
您可以继续多次转换列表,直到获得所需内容。