我有一个班级"内阁"有这样的结构:
class Cabinet {
var title: String
var floor: Int
var cabinetNumber: Int
}
另一个课程" Tabs"
class Tabs {
var floor: Int
var cabinetList: List<Cabinet>
}
所以在RxJava的帮助下,我试图创建Observable<List<Tabs>>
。
首先我得到了一个内阁清单,所以我必须得到所有的内阁和#34;到&#34;标签&#34;结构
fun getCabinets(): Observable<List<Tabs>> {
return getCabs() //This metod returns List<Cabinet>
.observeOn(Schedulers.io))
.filter { it.title != null }
... ??? //There I don't get what to do next
我想用#34;来映射&#34;创建集合Map<floor: Int, cabinetList: List<Cabinet>>
但不知道如何制作集合- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[webView.scrollView scrollRectToVisible:CGRectMake(0.0f, 0.0f, 0.0f, 0.0f) animated:NO];
}
。
请帮忙
答案 0 :(得分:1)
要将您的橱柜放入Map
,您可以使用collectInto
运营商:
getCabs()
.filter { it.title != null }
.collectInto(mutableMapOf<Int, MutableList<Cabinet>>()) { map, cabinet ->
if(map.contains(cabinet.floor)) map[cabinet.floor]?.add(cabinet)
else map.put(cabinet.floor, mutableListOf(cabinet))
}
// here is your Map<Int, List<Cabinet>>
更进一步,您可以使用Map
和List<Tab>
Set
条目将Map
映射到 .toObservable() // because collectInto returns Single
.flatMapIterable { it.entries }
.map { Tab(floor = it.key, cabinetList = it.value) }
// here is your Observable<List<Tabs>>
:
RxJava2
P.S。我假设您使用{{1}}。