Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 使用rxjava通过id使用列表2筛选列表1_Kotlin_Rx Java - Fatal编程技术网

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获奖者:列表)

欢迎来到堆栈溢出。请学习如何使用堆栈溢出,并阅读如何提高问题的质量。然后,你的问题包括完整的源代码,你有一个,它可以被编译和测试的其他人。请显示您尝试过的尝试以及从尝试中收到的问题/错误消息。是否有方法更有效地执行此操作并避免嵌套回调?我不知道你能告诉我这是回电话吗?