Kotlin 使用rxjava通过id使用列表2筛选列表1
我有一个Kotlin 使用rxjava通过id使用列表2筛选列表1,kotlin,rx-java,Kotlin,Rx Java,我有一个单个发射50项列表和一个单个发射5项列表。赢家和个人共享一个id字段。我想使用kotlin和rxjava来结束一个单曲。因此,它发布了一份获奖者名单 我尝试订阅getWinners(),但没有收到任何结果 fun getPersonObservable(): Observable<Person> = api.getPersonListSingle().toObservable().flatMap { Observable.fromIterable(
单个
发射50项列表和一个单个
发射5项列表。赢家和个人共享一个id
字段。我想使用kotlin和rxjava来结束一个单曲
。因此,它发布了一份获奖者名单
我尝试订阅getWinners(),但没有收到任何结果
fun getPersonObservable(): Observable<Person> =
api.getPersonListSingle().toObservable().flatMap {
Observable.fromIterable(it) }
fun getWinnerObservable(): Observable<Winner> =
api.getWinnerListSingle().toObservable().flatMap {
Observable.fromIterable(it) }
fun getWinners(): Single<List<Person>> =
getPersonObservable().zipWith(getWinnerObservable())
.filter { (person, winner) -> poerson.id == winner.id }
.map { (person, winner) -> person }.toList()
fun getPersonObservable():Observable=
api.getPersonListSingle().toObservable().flatMap{
可观察。从可观察(it)}
fun getWinnerObservable():可观察=
api.getWinnerListSingle().toObservable().flatMap{
可观察。从可观察(it)}
有趣的赢家():单身=
getPersonObservable().zipWith(getWinnerObservable())
.filter{(个人,获胜者)->poerson.id==winner.id}
.map{(person,winner)->person}.toList()
您可以对所有用户使用一个过滤器,其中包含来自winners的任何消息
alluser
和winnerUsers
是真实的测试数据,这将是网络层的数据源
import io.reactivex.rxjava3.core.Single
趣味主线(args:Array){
println(“你好,世界!”)
val alluser:Single=Single.create{emitter->
emitter.onSuccess(
列表(
AppUser(1,“silentsudo”),
AppUser(2,“堆栈溢出”)
)
)
}
val winnerUsers:Single=Single.create{emitter->
emitter.onSuccess(
列表(
AppUser(2,“堆栈溢出”),
)
)
}
单拉链(allUsers、WinneUsers、,
{用户:列表,获奖者:列表->
用户包装器(
用户,
胜利者
)
})
.subscribe{userWrapper->
用户包装器
.user.filter{item->userWrapper.winners.any{winner->item.id==winner.id}
.map{winnerUsers->
println(winnerUsers)
}
}
}
数据类AppUser(val id:Int,val name:String)
数据类UserWrapper(val用户:列表,val获奖者:列表)
欢迎来到堆栈溢出。请学习如何使用堆栈溢出,并阅读如何提高问题的质量。然后,你的问题包括完整的源代码,你有一个,它可以被编译和测试的其他人。请显示您尝试过的尝试以及从尝试中收到的问题/错误消息。是否有方法更有效地执行此操作并避免嵌套回调?我不知道你能告诉我这是回电话吗?